73 lines
3.1 KiB
VB.net
73 lines
3.1 KiB
VB.net
Imports DigitalData.EMLProfiler.ClassCurrent
|
|
Imports DigitalData.Modules.Logging
|
|
Imports AE
|
|
Imports System.Net
|
|
Imports System.Reflection
|
|
Imports System.IO
|
|
Imports DigitalData.Modules.Database
|
|
Imports DigitalData.Modules.Messaging
|
|
|
|
Public Class clsEmailIMAP
|
|
Private Shared Logger As DigitalData.Modules.Logging.Logger
|
|
Private Shared LogConfig As DigitalData.Modules.Logging.LogConfig
|
|
Private _DB_MSSQL As clsDatabase
|
|
Private _limilab As DigitalData.Modules.Messaging.Limilab
|
|
Sub New(LogConf As LogConfig, ECMConnectionString As String)
|
|
LogConfig = LogConf
|
|
Logger = LogConf.GetLogger
|
|
_DB_MSSQL = New clsDatabase(LogConf, ECMConnectionString)
|
|
_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
|