Big update: MessageID replaced with Hash of MessageID

This commit is contained in:
Jonathan Jenne
2023-07-03 16:35:24 +02:00
parent 2b21650c53
commit aa5a268e14
14 changed files with 523 additions and 538 deletions

View File

@@ -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