Messaging: Add functions to clear temp files, get sender/receiver addresses, always convert msg to eml
This commit is contained in:
parent
9ae92b75c2
commit
3f724dac44
@ -14,6 +14,7 @@ Public Class Email2
|
|||||||
Private ReadOnly LogConfig As LogConfig
|
Private ReadOnly LogConfig As LogConfig
|
||||||
Private ReadOnly FileEx As Filesystem.File
|
Private ReadOnly FileEx As Filesystem.File
|
||||||
Private ReadOnly MailBuilder As New MailBuilder()
|
Private ReadOnly MailBuilder As New MailBuilder()
|
||||||
|
Private ReadOnly TempFiles As New List(Of String)
|
||||||
|
|
||||||
Private DisableExcessiveLogging As Boolean = False
|
Private DisableExcessiveLogging As Boolean = False
|
||||||
|
|
||||||
@ -271,6 +272,16 @@ Public Class Email2
|
|||||||
End Try
|
End Try
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
''' <summary>
|
||||||
|
''' Loads an eml file from disk and returns the IMail representation of it
|
||||||
|
''' </summary>
|
||||||
|
''' <param name="pFileName">Path to the eml file</param>
|
||||||
|
''' <returns>The IMail object</returns>
|
||||||
|
Public Function Load_Email(pFileName As String) As IMail
|
||||||
|
Dim oFileName As String = MaybeConvert_MsgToEml(pFileName)
|
||||||
|
Return MailBuilder.CreateFromEmlFile(oFileName)
|
||||||
|
End Function
|
||||||
|
|
||||||
''' <summary>
|
''' <summary>
|
||||||
''' Removes all attachments from an EML file and saves it to a temporary file.
|
''' Removes all attachments from an EML file and saves it to a temporary file.
|
||||||
''' </summary>
|
''' </summary>
|
||||||
@ -282,7 +293,8 @@ Public Class Email2
|
|||||||
Dim oTempPath As String = Path.Combine(Path.GetTempPath(), Add_FilenameSuffix(pFileName, pSuffix))
|
Dim oTempPath As String = Path.Combine(Path.GetTempPath(), Add_FilenameSuffix(pFileName, pSuffix))
|
||||||
Dim oCleanedPath As String = FileEx.GetCleanFilename(oTempPath)
|
Dim oCleanedPath As String = FileEx.GetCleanFilename(oTempPath)
|
||||||
Dim oVersionedPath As String = FileEx.GetVersionedFilename(oCleanedPath)
|
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.RemoveAttachments()
|
||||||
oMail.Save(oVersionedPath)
|
oMail.Save(oVersionedPath)
|
||||||
@ -295,14 +307,11 @@ Public Class Email2
|
|||||||
End Try
|
End Try
|
||||||
End Function
|
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)
|
Public Function Save_AttachmentsToDisk(pFileName As String) As List(Of String)
|
||||||
Try
|
Try
|
||||||
Dim oAttachmentPaths As New List(Of String)
|
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()
|
Dim oTempPath As String = IO.Path.GetTempPath()
|
||||||
|
|
||||||
If oMail.Attachments.Count = 0 Then
|
If oMail.Attachments.Count = 0 Then
|
||||||
@ -315,6 +324,7 @@ Public Class Email2
|
|||||||
|
|
||||||
oAttachment.Save(oVersionedPath)
|
oAttachment.Save(oVersionedPath)
|
||||||
oAttachmentPaths.Add(oVersionedPath)
|
oAttachmentPaths.Add(oVersionedPath)
|
||||||
|
TempFiles.Add(oVersionedPath)
|
||||||
Next
|
Next
|
||||||
|
|
||||||
Return oAttachmentPaths
|
Return oAttachmentPaths
|
||||||
@ -325,7 +335,63 @@ Public Class Email2
|
|||||||
End Try
|
End Try
|
||||||
End Function
|
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)
|
Dim oInfo As New FileInfo(pEmailFileName)
|
||||||
|
|
||||||
If oInfo.Extension.ToUpper = ".EML" Then
|
If oInfo.Extension.ToUpper = ".EML" Then
|
||||||
@ -356,6 +422,7 @@ Public Class Email2
|
|||||||
|
|
||||||
End Using
|
End Using
|
||||||
|
|
||||||
|
TempFiles.Add(oVersionedPath)
|
||||||
Return oVersionedPath
|
Return oVersionedPath
|
||||||
|
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
@ -374,4 +441,8 @@ Public Class Email2
|
|||||||
Return $"{oFileNameWithoutExtension}{pSuffix}{oExtension}"
|
Return $"{oFileNameWithoutExtension}{pSuffix}{oExtension}"
|
||||||
|
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user