FileFlow/Global_Indexer/ClassEmailHeaderExtractor.vb
SchreiberM 64c99f80b9 MS2501
2017-01-25 10:16:40 +01:00

129 lines
5.3 KiB
VB.net

Imports Independentsoft
Imports System.Text.RegularExpressions
Public Class ClassEmailHeaderExtractor
''' <summary>
''' Extrahiert die Headerinformationen aus einer .msg Datei mithilfe der MSG.NET Klasse
''' </summary>
''' <param name="path">Der Pfad einer .msg Datei</param>
''' <returns>Headerinformationen als String oder Nothing wenn ein Fehler aufgetreten ist.</returns>
Public Shared Function getMessageHeaders(path As String)
Try
Dim msg As New Msg.Message(path)
Dim headers = msg.TransportMessageHeaders.Replace(vbCrLf, " ")
Return headers
Catch ex As Exception
Return Nothing
End Try
End Function
''' <summary>
''' Extrahiert die Headerinformationen aus einem msg Objekt mithilfe der MSG.NET Klasse
''' </summary>
''' <param name="msg">Eine Email vom Typ Msg.Message</param>
''' <returns>Headerinformationen als String oder Nothing wenn ein Fehler aufgetreten ist.</returns>
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
''' <summary>
''' Extrahiert aus den Headerinformationen anhand einer Liste von Regular Expressions eine Absenderadresse.
''' </summary>
''' <param name="messageHeaders">Headerinformationen die von getMessageHeaders erzeugt wurden.</param>
''' <param name="RegexList">Eine Liste von Regular Expressions</param>
''' <param name="RegexGroup">Die Ergebnisgruppe, die die Adresse enthält</param>
''' <returns>Eine Emailadresse oder Nothing, wenn keine der Regular Expressions ein Ergebnis lieferte.</returns>
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 extractFromAddress1(messageHeaders As String, Regex As String)
Try
Dim result
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.None)
Dim strTargetString As String = messageHeaders
' die Vorkommen im String auslesen
For Each myMatch As Match In myRegex.Matches(strTargetString)
If myMatch.Success Then
If myMatch.Value <> "" Then
If i = 0 Then
result = myMatch.Value.ToString
Else
result = result & ";" & myMatch.Value.ToString
End If
i += 1
End If
End If
Next
'' einen Regulären Ausdruck laden
'Dim regulärerAusdruck As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(Regex)
'' die Vorkommen im SQL-String auslesen
'Dim elemente As System.Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(messageHeaders)
'Dim result
'Dim i As Integer = 0
'' alle Vorkommen der Indexe im header durchlaufen
'For Each element As System.Text.RegularExpressions.Match In elemente
' If i = 0 Then
' result = element.ToString
' Else
' result = result & ";" & element.ToString
' End If
' i += 1
'Next
Return result
Catch ex As Exception
MsgBox("Unexpected Error in extractFromAddress1: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return Nothing
End Try
End Function
''' <summary>
''' Extrahiert aus den Headerinformationen anhand einer Liste von Regular Expressions eine Empfängeradresse.
''' </summary>
''' <param name="messageHeaders">Headerinformationen die von getMessageHeaders erzeugt wurden.</param>
''' <param name="RegexList">Eine Liste von Regular Expressions</param>
''' <param name="RegexGroup">Die Ergebnisgruppe, die die Adresse enthält</param>
''' <returns>Eine Emailadresse oder Nothing, wenn keine der Regular Expressions ein Ergebnis lieferte.</returns>
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