Rename Projects, clean up interfaces
This commit is contained in:
70
App/EmailProfiler.Common/clsEmail.IMAP.vb
Normal file
70
App/EmailProfiler.Common/clsEmail.IMAP.vb
Normal file
@@ -0,0 +1,70 @@
|
||||
Imports DigitalData.EMLProfiler.ClassCurrent
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports AE
|
||||
Imports System.Net
|
||||
Imports System.Reflection
|
||||
Imports System.IO
|
||||
|
||||
Imports DigitalData.Modules.Messaging
|
||||
|
||||
Public Class clsEmailIMAP
|
||||
Private Shared Logger As Logger
|
||||
Private Shared LogConfig As LogConfig
|
||||
Private _limilab As Limilab
|
||||
Sub New(LogConf As LogConfig)
|
||||
LogConfig = LogConf
|
||||
Logger = LogConf.GetLogger
|
||||
_limilab = New Limilab(LogConf)
|
||||
End Sub
|
||||
Public Function FetchIMAPMessagesLimilab(Server As String, Port As Integer, Username As String, Password As String, AuthType As String) As Boolean
|
||||
Try
|
||||
Logger.Debug("FetchIMAPMessagesLimilab - Fetching messages...")
|
||||
_limilab.InitIMAP(True, Server, Port, Username, Password, AuthType)
|
||||
Dim oListuids As New List(Of Long)
|
||||
oListuids = _limilab.IMAPGetMessageIDs_AllMails()
|
||||
|
||||
If IsNothing(oListuids) Then
|
||||
Logger.Warn("List of UIDs was Nothing. Returning False.")
|
||||
Return False
|
||||
Else
|
||||
If oListuids.Count > 0 Then
|
||||
CURRENT_WORKMAIL_UID_LIST = oListuids
|
||||
Logger.Info("FetchIMAPMessagesLimilab - Found [{0}] messages", oListuids.Count)
|
||||
CURRENT_ImapObject = _limilab.CurrentImapObject
|
||||
Else
|
||||
Logger.Debug("FetchIMAPMessagesLimilab - No Emails found!")
|
||||
End If
|
||||
|
||||
Return True
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Uses a private API from MailWriter to write a MailMessage to disk.
|
||||
''' May break in future versions of .NET
|
||||
''' </summary>
|
||||
Public Function WriteMessageToFile(Message As Mail.MailMessage, Filename As String) As Boolean
|
||||
Dim oAssembly As Assembly = GetType(Mail.SmtpClient).Assembly
|
||||
Dim oMailWriterType As Type = oAssembly.[GetType]("System.Net.Mail.MailWriter")
|
||||
|
||||
Try
|
||||
Using oStream As New FileStream(Filename, FileMode.Create)
|
||||
Dim oMailWriterConstructor As ConstructorInfo = oMailWriterType.GetConstructor(
|
||||
BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, New Type() {GetType(Stream)}, Nothing
|
||||
)
|
||||
Dim oMailWriter As Object = oMailWriterConstructor.Invoke(New Object() {oStream})
|
||||
Dim sendMethod As MethodInfo = GetType(Mail.MailMessage).GetMethod("Send", BindingFlags.Instance Or BindingFlags.NonPublic)
|
||||
sendMethod.Invoke(Message, BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, {oMailWriter, True, True}, Nothing)
|
||||
End Using
|
||||
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user