Imports System Imports Independentsoft.Email Imports Independentsoft.Email.Smtp Imports Independentsoft.Email.Mime Imports DigitalData.Modules.Logging Public Class Email Private _logger As DigitalData.Modules.Logging.Logger Private _logConfig As LogConfig Public Sub New(LogConfig As LogConfig) _logger = LogConfig.GetLogger() _logConfig = LogConfig End Sub Public Function IMAP_COLLECT(INBOXNAME As String, MYMAIL_SERVER As String, MYMAIL_PORT As Integer, MYMAIL_USER As String, MYMAIL_USER_PW As String) Returns Try _logger.Info(String.Format("Working on IMAP_COLLECT...")) Dim client As New ImapClient(MYMAIL_SERVER, MYMAIL_PORT) 'If LOG_ERRORS_ONLY = False Then ' Dim emaillogger As New Independentsoft.Email.Logger(My.Application.Info.DirectoryPath & "\Log\IDSoftMailLog.txt") ' AddHandler emaillogger.WriteLog, AddressOf OnWriteLog 'client.Logger = emaillogger 'End If client.ValidateRemoteCertificate = False client.Connect() client.Login(MYMAIL_USER, MYMAIL_USER_PW) client.SelectFolder("Inbox") Dim envelopes As Envelope() = client.ListMessages() For i As Integer = 0 To envelopes.Length - 1 If Not IsNothing(envelopes(i).Subject) Then 'If envelopes(i).Subject.ToString.ToUpper.Contains("[PROCESSMANAGER]") Or envelopes(i).Subject.ToString.ToUpper.Contains("[ADDI]") Then _logger.Info($"Working on email: UniqueID: {envelopes(i).UniqueID} - Subject:{envelopes(i).Subject} - Date {envelopes(i).Date.ToString}") Dim message As Mime.Message = client.GetMessage(envelopes(i).UniqueID) If Not IsNothing(message) Then MAIL_LIST.Add(message) End If 'End If End If Next client.Disconnect() _logger.Debug("IMAP_COLLECT finished!") Return True Catch ex As Exception _logger.Error(ex, "Unexpected Error in IMAP COLLECT:") Return False End Try End Function Public Function TEST_IMAP_COLLECT(INBOXNAME As String, MYMAIL_SERVER As String, MYMAIL_PORT As Integer, MYMAIL_USER As String, MYMAIL_USER_PW As String) Try Logger.Info(String.Format("Working on TEST_IMAP_COLLECT.....")) Dim client As New ImapClient(MYMAIL_SERVER, MYMAIL_PORT) 'If LOG_ERRORS_ONLY = False Then ' Dim emaillogger As New Independentsoft.Email.Logger(My.Application.Info.DirectoryPath & "\Log\IDSoftMailLog.txt") ' AddHandler emaillogger.WriteLog, AddressOf OnWriteLog 'client.Logger = emaillogger 'End If client.Connect() client.Login(MYMAIL_USER, MYMAIL_USER_PW) client.SelectFolder(INBOXNAME) Dim envelopes As Envelope() = client.ListMessages() For i As Integer = 0 To envelopes.Length - 1 If Not IsNothing(envelopes(i).Subject) Then 'If envelopes(i).Subject.ToString.ToUpper.Contains("[PROCESSMANAGER]") Or envelopes(i).Subject.ToString.ToUpper.Contains("[ADDI]") Then MsgBox($"Working on email: UniqueID: {envelopes(i).UniqueID} - Subject:{envelopes(i).Subject} - Date {envelopes(i).Date.ToString}") Dim message As Mime.Message = client.GetMessage(envelopes(i).UniqueID) End If Next client.Disconnect() Logger.Info("TEST_IMAP_COLLECT finished!") Return True Catch ex As Exception Logger.Error(ex, "Unexpected Error in TEST_IMAP_COLLECT:") Return False End Try End Function Public Function NewEmail(mailto As String, mailSubject As String, mailBody As String, mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String, AUTH_TYPE As String, SENDER_INSTANCE As String, Optional attment As String = "") Try _logger.Debug($"in NewEmail..") Dim oEmpfaenger As String() If mailto.Contains(";") Then oEmpfaenger = mailto.Split(";") Else ReDim Preserve oEmpfaenger(0) oEmpfaenger(0) = mailto End If Dim oError As Boolean = False 'Für jeden Empfänger eine Neue Mail erzeugen For Each oMailempfaenger As String In oEmpfaenger _logger.Debug($"Working on email for {oMailempfaenger}..") Try Dim oMessage As New Message() oMessage.From = New Mailbox(mailfrom, mailfrom) oMessage.[To].Add(New Mailbox(oMailempfaenger)) oMessage.Subject = mailSubject _logger.Debug($"Message created..") Dim oTextBodyPart As New BodyPart() oTextBodyPart.ContentType = New ContentType("text", "html", "utf-8") oTextBodyPart.ContentTransferEncoding = ContentTransferEncoding.QuotedPrintable Dim formattedBody = "" & mailBody & "

>> Service: " & SENDER_INSTANCE & "
" & ">> DateTime: " & My.Computer.Clock.LocalTime.ToShortDateString.ToString("dd.MM.yyyy") & " " & My.Computer.Clock.LocalTime.ToLongTimeString.ToString("H:mm:ss") & "
" Dim thisDate1 As Date = #6/10/2011# Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".") oTextBodyPart.Body = formattedBody oMessage.BodyParts.Add(oTextBodyPart) If attment <> String.Empty Then If System.IO.File.Exists(attment) Then Dim attachment1 As New Attachment(attment) If attment.ToLower.EndsWith("pdf") Then attachment1.ContentType = New ContentType("application", "pdf") ElseIf attment.ToLower.EndsWith("jpg") Then attachment1.ContentType = New ContentType("application", "jpg") ElseIf attment.ToLower.EndsWith("docx") Then attachment1.ContentType = New ContentType("application", "MS-word") End If oMessage.BodyParts.Add(attachment1) Else _logger.Warn($"Attachment {attment.ToString} is not existing!") End If End If Dim oEmailCient As SmtpClient Try oEmailCient = New SmtpClient(mailsmtp, mailport) Catch ex As Exception _logger.Warn("clsEmail.Create Client: " & ex.Message) oError = True Continue For End Try Try oEmailCient.Connect() Catch ex As Exception _logger.Warn("clsEmail.Client.Connect: " & ex.Message) oError = True ' Continue For End Try _logger.Debug("Connected to Client!") If AUTH_TYPE = "SSL" Then oEmailCient.EnableSsl = True 'client.ValidateRemoteCertificate = True _logger.Debug("Authentification via SSL.") ElseIf AUTH_TYPE = "TLS" Then ' client.ValidateRemoteCertificate = False oEmailCient.StartTls() oEmailCient.EnableSsl = False _logger.Info("Authentification via TLS. SSL disabled") Else oEmailCient.EnableSsl = False _logger.Info("Authentification NONE. SSL disabled") End If Try oEmailCient.Connect() Catch ex As Exception _logger.Warn("clsEmail.Client.Connect: " & ex.Message) oError = True ' Continue For End Try Try If mailsmtp.Contains("office365.com") Then oEmailCient.Login(mailUser, mailPW, AuthenticationType.None) Else oEmailCient.Login(mailUser, mailPW) End If _logger.Debug("Logged in!") Catch ex As Exception Try If mailsmtp.Contains("office365.com") Then oEmailCient.Login(mailUser, mailPW, AuthenticationType.Login) Else oEmailCient.Login(mailUser, mailPW, AuthenticationType.Anonymous) End If Catch ex1 As Exception Try oEmailCient.Login(mailUser, mailPW, AuthenticationType.Login) Catch ex2 As Exception _logger.Warn("clsEmail.Client.Login: " & ex.Message) oError = True oEmailCient.Disconnect() Continue For End Try End Try End Try Try oEmailCient.Send(oMessage) _logger.Info("Message to " & oMailempfaenger & " has been send.") oError = False Catch ex As Exception _logger.Warn("NewEmail.Send: " & ex.Message) oError = True oEmailCient.Disconnect() Continue For End Try oEmailCient.Disconnect() Catch ex As Exception _logger.Error(ex) oError = True End Try Next If oError = True Then Return False Else Return True End If Catch ex As Exception _logger.Error(ex) Return False End Try End Function End Class