Imports Independentsoft.Email Imports Independentsoft.Email.Pop3 Imports Independentsoft.Email.Smtp Imports Independentsoft.Email.Mime Imports Independentsoft.Email.Imap Imports DigitalData.Modules.Logging Imports System.Net.Mail Imports System.Net Public Class Email Private _logger As 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) Try Dim oMAIL_LIST As New ArrayList() _logger.Info(String.Format("Working on IMAP_COLLECT...")) Dim oClient As New ImapClient(MYMAIL_SERVER, MYMAIL_PORT) oClient.Connect() oClient.Login(MYMAIL_USER, MYMAIL_USER_PW) oClient.SelectFolder("Inbox") Dim oEnvelopes As Envelope() = oClient.ListMessages() For i As Integer = 0 To oEnvelopes.Length - 1 If Not IsNothing(oEnvelopes(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: {oEnvelopes(i).UniqueID} - Subject:{oEnvelopes(i).Subject} - Date {oEnvelopes(i).Date.ToString}") Dim message As Mime.Message = oClient.GetMessage(oEnvelopes(i).UniqueID) If Not IsNothing(message) Then oMAIL_LIST.Add(message) End If 'End If End If Next oClient.Disconnect() _logger.Debug("IMAP_COLLECT finished!") Return oMAIL_LIST Catch ex As Exception _logger.Error(ex, "Unexpected Error in IMAP COLLECT:") Return Nothing 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 oClient As New ImapClient(MYMAIL_SERVER, MYMAIL_PORT) oClient.Connect() oClient.Login(MYMAIL_USER, MYMAIL_USER_PW) oClient.SelectFolder(INBOXNAME) Dim oEnvelopes As Envelope() = oClient.ListMessages() For i As Integer = 0 To oEnvelopes.Length - 1 If Not IsNothing(oEnvelopes(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: {oEnvelopes(i).UniqueID} - Subject:{oEnvelopes(i).Subject} - Date {oEnvelopes(i).Date.ToString}") Dim message As Mime.Message = oClient.GetMessage(oEnvelopes(i).UniqueID) End If Next oClient.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 POP3_COLLECT(MYMAIL_SERVER As String, MYMAIL_PORT As Integer, MYMAIL_USER As String, MYMAIL_USER_PW As String) Try Dim oMAIL_LIST As New ArrayList() _logger.Debug(String.Format("Working on POP3_COLLECT.....")) Dim oClient As New Pop3Client(MYMAIL_SERVER, MYMAIL_PORT) oClient.ValidateRemoteCertificate = False oClient.Connect() _logger.Debug(String.Format("..connected!")) oClient.Login(MYMAIL_USER, MYMAIL_USER_PW) Dim oMessageInfo As MessageInfo() = oClient.List() For i As Integer = 0 To oMessageInfo.Length - 1 Dim message As Message = oClient.GetMessage(oMessageInfo(i).Index) oMAIL_LIST.Add(message) Try _logger.Debug(String.Format("Message [{0}] added", message.Subject)) Catch ex As Exception End Try Next oClient.Disconnect() _logger.Debug(String.Format(" POP3_COLLECT finished!")) Return oMAIL_LIST Catch ex As Exception _logger.Error(ex) Return Nothing End Try End Function Public Function TEST_POP3_COLLECT(MYMAIL_SERVER As String, MYMAIL_PORT As Integer, MYMAIL_USER As String, MYMAIL_USER_PW As String) As Boolean Try _logger.Debug(String.Format("Working on TEST_POP3_COLLECT...")) Dim oClient As New Pop3Client(MYMAIL_SERVER, MYMAIL_PORT) oClient.ValidateRemoteCertificate = False oClient.Connect() _logger.Debug(String.Format("..connected!")) oClient.Login(MYMAIL_USER, MYMAIL_USER_PW) Dim messageInfo As MessageInfo() = oClient.List() For i As Integer = 0 To messageInfo.Length - 1 Dim message As Message = oClient.GetMessage(messageInfo(i).Index) MsgBox(String.Format("Message [{0}] added", message.Subject)) Next oClient.Disconnect() MsgBox(String.Format("TEST_POP3_COLLECT finished!")) Return True Catch ex As Exception _logger.Error(ex) 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 attachmentString As String = "", Optional Test As Boolean = False) Try Dim oError As Boolean = False Dim oReceipiants As String() If mailto.Contains(";") Then oReceipiants = mailto.Split(";") Else ReDim Preserve oReceipiants(0) oReceipiants(0) = mailto End If For Each oMailReceipiant As String In oReceipiants _logger.Debug($"oMailReceipiant [{oMailReceipiant}]") _logger.Debug($"mailsmtp [{mailsmtp}]") Dim sClient As Net.Mail.SmtpClient Try sClient = New Net.Mail.SmtpClient(mailsmtp, mailport) Catch ex As Exception _logger.Warn($"Could not create SMTP-Client: [{ex.Message}]") Return False End Try sClient.DeliveryMethod = SmtpDeliveryMethod.Network Dim mymesssage As New MailMessage sClient.Port = mailport _logger.Debug($"mailport [{mailport}]") If AUTH_TYPE = "SSL" Then _logger.Debug("SSL = true") sClient.EnableSsl = True Else _logger.Debug("SSL = false") sClient.EnableSsl = False End If _logger.Debug($"mailUser [{mailUser}]") sClient.Credentials = New NetworkCredential(mailUser, mailPW) sClient.UseDefaultCredentials = False If Test = True Then mymesssage.Body = $"This is the body (text will be replaced within profile)!
mailsmtp: {mailsmtp}
mailport: {mailport}
mailUser: {mailUser}
mailPW: XXXX
AUTH_TYPE: {AUTH_TYPE}" Else mymesssage.Body = mailBody End If _logger.Debug($"mailBody [{mailBody}]") 'mymesssage.IsBodyHtml = True Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(mymesssage.Body) htmlView.ContentType = New System.Net.Mime.ContentType("text/html") mymesssage.AlternateViews.Add(htmlView) _logger.Debug($"attachmentString [{attachmentString}]") If attachmentString <> "" Then _logger.Info($"Attachment Path is: {attachmentString}") Dim oAttachment As New System.Net.Mail.Attachment(attachmentString) 'If attment.ToLower.EndsWith("pdf") Then ' oAttachment.ContentType = New Independentsoft.Email.Mime.ContentType("application", "pdf") 'ElseIf attment.ToLower.EndsWith("jpg") Then ' oAttachment.ContentType = New Independentsoft.Email.Mime.ContentType("application", "jpg") 'ElseIf attment.ToLower.EndsWith("docx") Then ' oAttachment.ContentType = New Independentsoft.Email.Mime.ContentType("application", "MS-word") 'End If mymesssage.Attachments.Add(oAttachment) Else _logger.Debug("No Attachment.") End If _logger.Debug($"mailfrom [{mailfrom}]") mymesssage.From = New MailAddress(mailfrom) _logger.Debug($"mailSubject [{mailSubject}]") mymesssage.Subject = mailSubject mymesssage.To.Add(New MailAddress(oMailReceipiant)) _logger.Debug($"Now Sending mail...") sClient.Send(mymesssage) _logger.Debug($"Mail has been sent!") _logger.Info("Message to " & oMailReceipiant & " has been send.") Next If oError = False Then Return True Else Return False End If Catch ex As Exception _logger.Error(ex) Return False End Try End Function Public Function DELETE_EMAIL(POLLTYPE As String, msgid As String, MYMAIL_SERVER As String, MYMAIL_PORT As Integer, MYMAIL_USER As String, MYMAIL_USER_PW As String) Try If POLLTYPE = "POP" Then Dim oClient As New Pop3Client(MYMAIL_SERVER, MYMAIL_PORT) oClient.ValidateRemoteCertificate = False oClient.Connect() oClient.Login(MYMAIL_USER, MYMAIL_USER_PW) Dim oMessageInfo As MessageInfo() = oClient.List() For i As Integer = 0 To oMessageInfo.Length - 1 Dim message As Message = oClient.GetMessage(oMessageInfo(i).Index) If message.MessageID = msgid Then oClient.Delete(oMessageInfo(i).Index) _logger.Info(String.Format("Message [{0}] was deleted!", message.Subject)) Exit For End If Next oClient.Disconnect() Return True ElseIf POLLTYPE = "IMAP" Then Dim oIMAPClient As New ImapClient(MYMAIL_SERVER, MYMAIL_PORT) oIMAPClient.ValidateRemoteCertificate = False oIMAPClient.Connect() oIMAPClient.Login(MYMAIL_USER, MYMAIL_USER_PW) oIMAPClient.SelectFolder("Inbox") Dim envelopes As Envelope() = oIMAPClient.ListMessages() For i As Integer = 0 To envelopes.Length - 1 If envelopes(i).MessageID = msgid Then oIMAPClient.Delete(envelopes(i).UniqueID) 'mark as deleted End If Next oIMAPClient.Expunge() 'delete messages marked as deleted oIMAPClient.Disconnect() Return True End If Catch ex As Exception _logger.Error(ex) 'clsLogger.Add("Unexpected Error in DELETE_EMAIL: " & ex.Message) Return False End Try End Function End Class