diff --git a/LookupGrid/LookupControl.vb b/LookupGrid/LookupControl.vb index 3803b650..7815ecb5 100644 --- a/LookupGrid/LookupControl.vb +++ b/LookupGrid/LookupControl.vb @@ -11,10 +11,24 @@ Public Class LookupControl Public Property PreventDuplicates As Boolean - + Public Property DataSource As DataTable - - Public Property SelectedValues As New List(Of String) + + Public Property SelectedValues As List(Of String) + Get + If _selectedValues Is Nothing Then + Return New List(Of String) + End If + + Return _selectedValues + End Get + Set(value As List(Of String)) + _selectedValues = value + + UpdateSelectedValues(value) + End Set + End Property + Private _selectedValues As List(Of String) Private _lookupControlMulti As GridLookUpEdit Private _lookupControlSingle As ButtonEdit diff --git a/Message/Email.vb b/Message/Email.vb index f58f3fd5..eaf65f6c 100644 --- a/Message/Email.vb +++ b/Message/Email.vb @@ -1,7 +1,9 @@ Imports System Imports Independentsoft.Email +Imports Independentsoft.Email.Pop3 Imports Independentsoft.Email.Smtp Imports Independentsoft.Email.Mime +Imports Independentsoft.Email.Imap Imports DigitalData.Modules.Logging Public Class Email @@ -11,73 +13,117 @@ Public Class Email _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 + 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 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 + 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: {envelopes(i).UniqueID} - Subject:{envelopes(i).Subject} - Date {envelopes(i).Date.ToString}") - Dim message As Mime.Message = client.GetMessage(envelopes(i).UniqueID) + _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 - MAIL_LIST.Add(message) + oMAIL_LIST.Add(message) End If 'End If End If Next - client.Disconnect() + oClient.Disconnect() _logger.Debug("IMAP_COLLECT finished!") - Return True + Return oMAIL_LIST Catch ex As Exception _logger.Error(ex, "Unexpected Error in IMAP COLLECT:") - Return False + 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 client As New ImapClient(MYMAIL_SERVER, MYMAIL_PORT) + _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() - '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 + 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: {envelopes(i).UniqueID} - Subject:{envelopes(i).Subject} - Date {envelopes(i).Date.ToString}") - Dim message As Mime.Message = client.GetMessage(envelopes(i).UniqueID) + 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 - - client.Disconnect() - Logger.Info("TEST_IMAP_COLLECT finished!") + oClient.Disconnect() + _logger.Info("TEST_IMAP_COLLECT finished!") Return True - Catch ex As Exception - Logger.Error(ex, "Unexpected Error in TEST_IMAP_COLLECT:") + _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 @@ -133,24 +179,24 @@ Public Class Email Try oEmailCient = New SmtpClient(mailsmtp, mailport) Catch ex As Exception - _logger.Warn("clsEmail.Create Client: " & ex.Message) + _logger.Warn("clsEmail.Create oClient: " & ex.Message) oError = True Continue For End Try Try oEmailCient.Connect() Catch ex As Exception - _logger.Warn("clsEmail.Client.Connect: " & ex.Message) + _logger.Warn("clsEmail.oClient.Connect: " & ex.Message) oError = True ' Continue For End Try - _logger.Debug("Connected to Client!") + _logger.Debug("Connected to oClient!") If AUTH_TYPE = "SSL" Then oEmailCient.EnableSsl = True - 'client.ValidateRemoteCertificate = True + 'oClient.ValidateRemoteCertificate = True _logger.Debug("Authentification via SSL.") ElseIf AUTH_TYPE = "TLS" Then - ' client.ValidateRemoteCertificate = False + ' oClient.ValidateRemoteCertificate = False oEmailCient.StartTls() oEmailCient.EnableSsl = False _logger.Info("Authentification via TLS. SSL disabled") @@ -161,7 +207,7 @@ Public Class Email Try oEmailCient.Connect() Catch ex As Exception - _logger.Warn("clsEmail.Client.Connect: " & ex.Message) + _logger.Warn("clsEmail.oClient.Connect: " & ex.Message) oError = True ' Continue For End Try @@ -185,7 +231,7 @@ Public Class Email Try oEmailCient.Login(mailUser, mailPW, AuthenticationType.Login) Catch ex2 As Exception - _logger.Warn("clsEmail.Client.Login: " & ex.Message) + _logger.Warn("clsEmail.oClient.Login: " & ex.Message) oError = True oEmailCient.Disconnect() Continue For @@ -220,4 +266,49 @@ Public Class Email 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