Imports Independentsoft Imports Limilabs.Mail Imports Limilabs.Mail.MSG Imports System.Text.RegularExpressions Public Class ClassEmailHeaderExtractor ''' ''' Extrahiert die Headerinformationen aus einem msg Objekt mithilfe der MSG.NET Klasse ''' ''' Eine Email vom Typ Msg.Message ''' Headerinformationen als String oder Nothing wenn ein Fehler aufgetreten ist. Public Shared Function getMessageHeaders(msg As Msg.Message) Try Dim headers = msg.TransportMessageHeaders.Replace(vbCrLf, " ") Return headers Catch ex As Exception Return Nothing End Try End Function ''' ''' Extrahiert aus den Headerinformationen anhand einer Liste von Regular Expressions eine Absenderadresse. ''' ''' Headerinformationen die von getMessageHeaders erzeugt wurden. ''' Eine Liste von Regular Expressions ''' Die Ergebnisgruppe, die die Adresse enthält ''' Eine Emailadresse oder Nothing, wenn keine der Regular Expressions ein Ergebnis lieferte. Public Shared Function extractFromAddress(messageHeaders As String, RegexList As List(Of Regex), Optional RegexGroup As Integer = 1) If IsNothing(messageHeaders) Then Return Nothing End If For Each rx In RegexList Dim match As Match = rx.Match(messageHeaders) Dim email As String = match.Groups(RegexGroup).Value If Not String.IsNullOrWhiteSpace(email) Then Return email End If Next Return Nothing End Function Public Shared Function extractFromHeader(messageHeaders As String, Regex As String) Try Dim result = Nothing Dim i As Integer = 0 If IsNothing(messageHeaders) Then Return Nothing End If ' einen Regulären Ausdruck laden Dim strRegex As String = Regex Dim myRegex As New Regex(strRegex, RegexOptions.IgnorePatternWhitespace Or RegexOptions.IgnoreCase) Dim strTargetString As String = messageHeaders.Trim ' die Vorkommen im String auslesen For Each myMatch As Match In myRegex.Matches(strTargetString) If myMatch.Success Then LOGGER.Debug("Match success. Matched Value: [{0}]", myMatch.Value) If myMatch.Value <> "" Then If i = 0 Then result = myMatch.Value.ToString Else result = result & ";" & myMatch.Value.ToString End If i += 1 End If Else LOGGER.Debug("Match failed!") End If Next LOGGER.Debug("Extracted value: [{0}]", result) Return result Catch ex As Exception LOGGER.Error(ex) MsgBox("Unexpected Error in extractFromHeader: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) Return Nothing End Try End Function ''' ''' Extrahiert aus den Headerinformationen anhand einer Liste von Regular Expressions eine Empfängeradresse. ''' ''' Headerinformationen die von getMessageHeaders erzeugt wurden. ''' Eine Liste von Regular Expressions ''' Die Ergebnisgruppe, die die Adresse enthält ''' Eine Emailadresse oder Nothing, wenn keine der Regular Expressions ein Ergebnis lieferte. Public Shared Function extractToAddress(messageHeaders As String, RegexList As List(Of Regex), Optional RegexGroup As Integer = 1) If IsNothing(messageHeaders) Then Return Nothing End If For Each rx In RegexList Dim match As Match = rx.Match(messageHeaders) Dim email As String = match.Groups(RegexGroup).Value If Not String.IsNullOrWhiteSpace(email) Then Return email End If Next Return Nothing End Function End Class