EmailProfiler.Common: Logik zur Vermeidung von doppelten EMail MessageIDs überarbeitet
This commit is contained in:
@@ -22,14 +22,11 @@ Public Class MailContainer
|
||||
''' <summary>
|
||||
''' The new MessageID, which is generated by hashing the original MessageID
|
||||
''' </summary>
|
||||
Public ReadOnly Property MessageId As String
|
||||
Public Property MessageId As String
|
||||
|
||||
''' <summary>
|
||||
''' Eine zweite MessageID, in der das Mail-Datum berücksichtigt wird.
|
||||
''' Wird verwendet wenn MessageId bereits existiert.
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public ReadOnly Property MessageId2 As String
|
||||
Public ReadOnly Property EMailDate As Date
|
||||
|
||||
Public ReadOnly Property MessageIDHashSet As HashSet(Of String) = New HashSet(Of String)
|
||||
|
||||
''' <summary>
|
||||
''' The subject, truncated to SUBJECT_MAX_LENGTH characters
|
||||
@@ -48,13 +45,39 @@ Public Class MailContainer
|
||||
|
||||
MessageIdOriginal = pMail.MessageID
|
||||
MessageId = StringEx.GetShortHash(pMail.MessageID)
|
||||
MessageId2 = StringEx.GetShortHash(pMail.MessageID + pMail.Date.ToString())
|
||||
|
||||
Subject = ObjectEx.NotNull(pMail.Subject.Truncate(SUBJECT_MAX_LENGTH), String.Empty)
|
||||
SubjectOriginal = ObjectEx.NotNull(pMail.Subject, String.Empty)
|
||||
|
||||
SenderAddress = GetSenderAddress(pMail)
|
||||
SenderDomain = GetSenderDomain(pMail)
|
||||
|
||||
EMailDate = GetEmailDate(pMail)
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Erzeugt eine Liste von n unterschiedlichen MessageIDs
|
||||
''' Dabei verwenden wir den vorherigen Wert, um daraus einen neuen zu erzeugen
|
||||
''' </summary>
|
||||
Public Sub InitializeHashsetOfMessageIDs()
|
||||
MessageIDHashSet.Clear()
|
||||
|
||||
Dim nextMessageID As String
|
||||
|
||||
If String.IsNullOrEmpty(MessageIdOriginal) = True Then
|
||||
nextMessageID = "1234567890ABCDEFGHIJKLMNOPQRSTUV" ' irgendwelche 32 Zeichen
|
||||
Else
|
||||
nextMessageID = MessageIdOriginal
|
||||
End If
|
||||
|
||||
For index = 1 To 10
|
||||
Dim zeitMitMs As String = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")
|
||||
nextMessageID = nextMessageID + "_" + index.ToString + "_" + zeitMitMs
|
||||
nextMessageID = StringEx.GetShortHash(nextMessageID)
|
||||
|
||||
MessageIDHashSet.Add(nextMessageID)
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Private Function GetSenderAddress(pMail As IMail)
|
||||
@@ -67,4 +90,16 @@ Public Class MailContainer
|
||||
Return oMailBox.DomainPart
|
||||
End Function
|
||||
|
||||
Public Sub SetMessageID(pMessageID As String)
|
||||
MessageId = pMessageID
|
||||
End Sub
|
||||
|
||||
Private Function GetEmailDate(pMail As IMail) As Date
|
||||
If pMail.Date IsNot Nothing Then
|
||||
Return pMail.Date
|
||||
Else
|
||||
Return Date.MinValue
|
||||
End If
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
Reference in New Issue
Block a user