diff --git a/Modules.Messaging/Email2.vb b/Modules.Messaging/Email2.vb
index 46f2e21f..a772f4e7 100644
--- a/Modules.Messaging/Email2.vb
+++ b/Modules.Messaging/Email2.vb
@@ -14,6 +14,7 @@ Public Class Email2
Private ReadOnly LogConfig As LogConfig
Private ReadOnly FileEx As Filesystem.File
Private ReadOnly MailBuilder As New MailBuilder()
+ Private ReadOnly TempFiles As New List(Of String)
Private DisableExcessiveLogging As Boolean = False
@@ -271,6 +272,16 @@ Public Class Email2
End Try
End Function
+ '''
+ ''' Loads an eml file from disk and returns the IMail representation of it
+ '''
+ ''' Path to the eml file
+ ''' The IMail object
+ Public Function Load_Email(pFileName As String) As IMail
+ Dim oFileName As String = MaybeConvert_MsgToEml(pFileName)
+ Return MailBuilder.CreateFromEmlFile(oFileName)
+ End Function
+
'''
''' Removes all attachments from an EML file and saves it to a temporary file.
'''
@@ -282,7 +293,8 @@ Public Class Email2
Dim oTempPath As String = Path.Combine(Path.GetTempPath(), Add_FilenameSuffix(pFileName, pSuffix))
Dim oCleanedPath As String = FileEx.GetCleanFilename(oTempPath)
Dim oVersionedPath As String = FileEx.GetVersionedFilename(oCleanedPath)
- Dim oMail = MailBuilder.CreateFromEmlFile(pFileName)
+ Dim oEmlPath As String = MaybeConvert_MsgToEml(pFileName)
+ Dim oMail = MailBuilder.CreateFromEmlFile(oEmlPath)
oMail.RemoveAttachments()
oMail.Save(oVersionedPath)
@@ -295,14 +307,11 @@ Public Class Email2
End Try
End Function
- Public Function Load_Email(pFileName As String) As IMail
- Return MailBuilder.CreateFromEmlFile(pFileName)
- End Function
-
Public Function Save_AttachmentsToDisk(pFileName As String) As List(Of String)
Try
Dim oAttachmentPaths As New List(Of String)
- Dim oMail = MailBuilder.CreateFromEmlFile(pFileName)
+ Dim oEmlFile As String = MaybeConvert_MsgToEml(pFileName)
+ Dim oMail = MailBuilder.CreateFromEmlFile(oEmlFile)
Dim oTempPath As String = IO.Path.GetTempPath()
If oMail.Attachments.Count = 0 Then
@@ -315,6 +324,7 @@ Public Class Email2
oAttachment.Save(oVersionedPath)
oAttachmentPaths.Add(oVersionedPath)
+ TempFiles.Add(oVersionedPath)
Next
Return oAttachmentPaths
@@ -325,7 +335,63 @@ Public Class Email2
End Try
End Function
- Public Function Convert_MsgToEml(pEmailFileName As String) As String
+ Public Sub Clear_TempFiles()
+ Logger.Info("Cleaning [{0}] email temp files", TempFiles.Count)
+ For Each oFile In TempFiles
+ Try
+ IO.File.Delete(oFile)
+ Catch ex As Exception
+ Logger.Warn("Could not clean temp file [{0}]", oFile)
+ Logger.Error(ex)
+ End Try
+ Next
+ End Sub
+
+ Public Function Get_MessageSender(Mail As IMail) As String
+ Try
+ Dim oAddress = Mail.From.First()
+
+ If oAddress Is Nothing Then
+ Logger.Warn("Could not get MessageSender from Mail [{0}]", Mail.MessageID)
+ Return Nothing
+ End If
+
+ Return oAddress.Address
+
+ Catch ex As Exception
+ Logger.Warn("Could not get MessageSender from Mail [{0}]", Mail.MessageID)
+ Logger.Error(ex)
+ Return Nothing
+
+ End Try
+ End Function
+
+ Public Function Get_MessageReceiver(Mail As IMail) As String
+ Try
+ Dim oAddress = Mail.To.FirstOrDefault()
+
+ If oAddress Is Nothing Then
+ Logger.Warn("Could not get MessageReceiver from Mail [{0}]", Mail.MessageID)
+ Return Nothing
+ End If
+
+ Dim oMailBox = oAddress.GetMailboxes().First()
+
+ If oMailBox Is Nothing Then
+ Logger.Warn("Could not get MessageReceiver from Mail [{0}]", Mail.MessageID)
+ Return Nothing
+ End If
+
+ Return oMailBox.Address
+
+ Catch ex As Exception
+ Logger.Error(ex)
+ Return Nothing
+
+ End Try
+ End Function
+
+ Private Function MaybeConvert_MsgToEml(pEmailFileName As String) As String
Dim oInfo As New FileInfo(pEmailFileName)
If oInfo.Extension.ToUpper = ".EML" Then
@@ -356,6 +422,7 @@ Public Class Email2
End Using
+ TempFiles.Add(oVersionedPath)
Return oVersionedPath
Catch ex As Exception
@@ -374,4 +441,8 @@ Public Class Email2
Return $"{oFileNameWithoutExtension}{pSuffix}{oExtension}"
End Function
+
+
+
+
End Class