Big update: MessageID replaced with Hash of MessageID
This commit is contained in:
@@ -1,52 +1,64 @@
|
||||
Imports Limilabs.Mail
|
||||
Imports DigitalData.Modules.Language
|
||||
Imports DigitalData.Modules.Base
|
||||
|
||||
Public Class MailContainer
|
||||
Private ReadOnly Uid As String
|
||||
Private ReadOnly FilteredMessageId
|
||||
Private Const SUBJECT_MAX_LENGTH = 25
|
||||
|
||||
''' <summary>
|
||||
''' The Mail object created by Limilabs
|
||||
''' </summary>
|
||||
Public ReadOnly Property Mail As IMail
|
||||
|
||||
Public ReadOnly Property Subject As String
|
||||
Get
|
||||
Return Mail.Subject
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' The IMAP Id coming from the IMAP folder. Used to reference the mail.
|
||||
''' </summary>
|
||||
Public ReadOnly Property ImapId As Integer
|
||||
''' <summary>
|
||||
''' The original MessageID from the eml file
|
||||
''' </summary>
|
||||
Public ReadOnly Property MessageIdOriginal As String
|
||||
''' <summary>
|
||||
''' The new MessageID, which is generated by hashing the original MessageID
|
||||
''' </summary>
|
||||
Public ReadOnly Property MessageId As String
|
||||
Get
|
||||
Return Mail.MessageID
|
||||
End Get
|
||||
End Property
|
||||
''' <summary>
|
||||
''' The subject, truncated to SUBJECT_MAX_LENGTH characters
|
||||
''' </summary>
|
||||
Public ReadOnly Property Subject As String
|
||||
|
||||
Public ReadOnly Property MessageIdPathSafe As String
|
||||
Get
|
||||
Return FilteredMessageId
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Property BodyComplete As String
|
||||
Public Property BodySubstring1 As String
|
||||
Public Property BodySubstring2 As String
|
||||
Public ReadOnly Property SenderDomain As String
|
||||
Public ReadOnly Property SenderAddress As String
|
||||
|
||||
|
||||
|
||||
Public Sub New(pMail As IMail, pUid As String)
|
||||
Public Sub New(pMail As IMail, pImapId As Integer)
|
||||
Mail = pMail
|
||||
Uid = pUid
|
||||
FilteredMessageId = ProcessMessageId(pMail.MessageID)
|
||||
ImapId = pImapId
|
||||
|
||||
MessageIdOriginal = pMail.MessageID
|
||||
MessageId = StringEx.GetHash(pMail.MessageID)
|
||||
|
||||
Subject = ObjectEx.NotNull(pMail.Subject.Truncate(SUBJECT_MAX_LENGTH), String.Empty)
|
||||
|
||||
SenderAddress = GetSenderAddress(pMail)
|
||||
SenderDomain = GetSenderDomain(pMail)
|
||||
End Sub
|
||||
|
||||
Private Function ProcessMessageId(pOriginalMessageId As String) As String
|
||||
If pOriginalMessageId Is Nothing Then
|
||||
Return Guid.NewGuid.ToString
|
||||
End If
|
||||
|
||||
If TypeOf pOriginalMessageId Is String AndAlso pOriginalMessageId.Length = 0 Then
|
||||
Return Guid.NewGuid.ToString
|
||||
Private Function GetSenderAddress(pMail As IMail)
|
||||
Dim oMailBox = pMail.From.FirstOrDefault()
|
||||
If oMailBox Is Nothing Then
|
||||
Return "InvalidSenderAddress"
|
||||
Else
|
||||
Return oMailBox.Address
|
||||
End If
|
||||
End Function
|
||||
|
||||
Return Utils.RemoveInvalidCharacters(pOriginalMessageId)
|
||||
Private Function GetSenderDomain(pMail As IMail)
|
||||
Dim oMailBox = pMail.From.FirstOrDefault()
|
||||
If oMailBox Is Nothing Then
|
||||
Return "InvalidSenderAddress"
|
||||
Else
|
||||
Return oMailBox.DomainPart
|
||||
End If
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
Reference in New Issue
Block a user