This commit is contained in:
Digital Data - Marlon Schreiber 2018-12-21 15:22:06 +01:00
parent 063bdea7d4
commit a567d18e46
2 changed files with 158 additions and 53 deletions

View File

@ -11,10 +11,24 @@ Public Class LookupControl
<Category("Einstellungen"), Description("Gibt an, ob das Hinzufügen von identischen Werten erlaubt ist"), DefaultValue(False)> <Category("Einstellungen"), Description("Gibt an, ob das Hinzufügen von identischen Werten erlaubt ist"), DefaultValue(False)>
Public Property PreventDuplicates As Boolean Public Property PreventDuplicates As Boolean
<Browsable(False)>
Public Property DataSource As DataTable Public Property DataSource As DataTable
<Browsable(False)>
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 _lookupControlMulti As GridLookUpEdit
Private _lookupControlSingle As ButtonEdit Private _lookupControlSingle As ButtonEdit

View File

@ -1,7 +1,9 @@
Imports System Imports System
Imports Independentsoft.Email Imports Independentsoft.Email
Imports Independentsoft.Email.Pop3
Imports Independentsoft.Email.Smtp Imports Independentsoft.Email.Smtp
Imports Independentsoft.Email.Mime Imports Independentsoft.Email.Mime
Imports Independentsoft.Email.Imap
Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Logging
Public Class Email Public Class Email
@ -11,73 +13,117 @@ Public Class Email
_logger = LogConfig.GetLogger() _logger = LogConfig.GetLogger()
_logConfig = LogConfig _logConfig = LogConfig
End Sub 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 Try
Dim oMAIL_LIST As New ArrayList()
_logger.Info(String.Format("Working on IMAP_COLLECT...")) _logger.Info(String.Format("Working on IMAP_COLLECT..."))
Dim oClient As New ImapClient(MYMAIL_SERVER, MYMAIL_PORT)
Dim client As New ImapClient(MYMAIL_SERVER, MYMAIL_PORT) oClient.Connect()
oClient.Login(MYMAIL_USER, MYMAIL_USER_PW)
'If LOG_ERRORS_ONLY = False Then oClient.SelectFolder("Inbox")
' Dim emaillogger As New Independentsoft.Email.Logger(My.Application.Info.DirectoryPath & "\Log\IDSoftMailLog.txt") Dim oEnvelopes As Envelope() = oClient.ListMessages()
' AddHandler emaillogger.WriteLog, AddressOf OnWriteLog For i As Integer = 0 To oEnvelopes.Length - 1
'client.Logger = emaillogger If Not IsNothing(oEnvelopes(i).Subject) Then
'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 '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}") _logger.Info($"Working on email: UniqueID: {oEnvelopes(i).UniqueID} - Subject:{oEnvelopes(i).Subject} - Date {oEnvelopes(i).Date.ToString}")
Dim message As Mime.Message = client.GetMessage(envelopes(i).UniqueID) Dim message As Mime.Message = oClient.GetMessage(oEnvelopes(i).UniqueID)
If Not IsNothing(message) Then If Not IsNothing(message) Then
MAIL_LIST.Add(message) oMAIL_LIST.Add(message)
End If End If
'End If 'End If
End If End If
Next Next
client.Disconnect() oClient.Disconnect()
_logger.Debug("IMAP_COLLECT finished!") _logger.Debug("IMAP_COLLECT finished!")
Return True Return oMAIL_LIST
Catch ex As Exception Catch ex As Exception
_logger.Error(ex, "Unexpected Error in IMAP COLLECT:") _logger.Error(ex, "Unexpected Error in IMAP COLLECT:")
Return False Return Nothing
End Try End Try
End Function 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) 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 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 For i As Integer = 0 To oEnvelopes.Length - 1
' Dim emaillogger As New Independentsoft.Email.Logger(My.Application.Info.DirectoryPath & "\Log\IDSoftMailLog.txt") If Not IsNothing(oEnvelopes(i).Subject) Then
' 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 '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}") MsgBox($"Working on email: UniqueID: {oEnvelopes(i).UniqueID} - Subject:{oEnvelopes(i).Subject} - Date {oEnvelopes(i).Date.ToString}")
Dim message As Mime.Message = client.GetMessage(envelopes(i).UniqueID) Dim message As Mime.Message = oClient.GetMessage(oEnvelopes(i).UniqueID)
End If End If
Next Next
oClient.Disconnect()
client.Disconnect() _logger.Info("TEST_IMAP_COLLECT finished!")
Logger.Info("TEST_IMAP_COLLECT finished!")
Return True Return True
Catch ex As Exception 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 Return False
End Try End Try
End Function End Function
@ -133,24 +179,24 @@ Public Class Email
Try Try
oEmailCient = New SmtpClient(mailsmtp, mailport) oEmailCient = New SmtpClient(mailsmtp, mailport)
Catch ex As Exception Catch ex As Exception
_logger.Warn("clsEmail.Create Client: " & ex.Message) _logger.Warn("clsEmail.Create oClient: " & ex.Message)
oError = True oError = True
Continue For Continue For
End Try End Try
Try Try
oEmailCient.Connect() oEmailCient.Connect()
Catch ex As Exception Catch ex As Exception
_logger.Warn("clsEmail.Client.Connect: " & ex.Message) _logger.Warn("clsEmail.oClient.Connect: " & ex.Message)
oError = True oError = True
' Continue For ' Continue For
End Try End Try
_logger.Debug("Connected to Client!") _logger.Debug("Connected to oClient!")
If AUTH_TYPE = "SSL" Then If AUTH_TYPE = "SSL" Then
oEmailCient.EnableSsl = True oEmailCient.EnableSsl = True
'client.ValidateRemoteCertificate = True 'oClient.ValidateRemoteCertificate = True
_logger.Debug("Authentification via SSL.") _logger.Debug("Authentification via SSL.")
ElseIf AUTH_TYPE = "TLS" Then ElseIf AUTH_TYPE = "TLS" Then
' client.ValidateRemoteCertificate = False ' oClient.ValidateRemoteCertificate = False
oEmailCient.StartTls() oEmailCient.StartTls()
oEmailCient.EnableSsl = False oEmailCient.EnableSsl = False
_logger.Info("Authentification via TLS. SSL disabled") _logger.Info("Authentification via TLS. SSL disabled")
@ -161,7 +207,7 @@ Public Class Email
Try Try
oEmailCient.Connect() oEmailCient.Connect()
Catch ex As Exception Catch ex As Exception
_logger.Warn("clsEmail.Client.Connect: " & ex.Message) _logger.Warn("clsEmail.oClient.Connect: " & ex.Message)
oError = True oError = True
' Continue For ' Continue For
End Try End Try
@ -185,7 +231,7 @@ Public Class Email
Try Try
oEmailCient.Login(mailUser, mailPW, AuthenticationType.Login) oEmailCient.Login(mailUser, mailPW, AuthenticationType.Login)
Catch ex2 As Exception Catch ex2 As Exception
_logger.Warn("clsEmail.Client.Login: " & ex.Message) _logger.Warn("clsEmail.oClient.Login: " & ex.Message)
oError = True oError = True
oEmailCient.Disconnect() oEmailCient.Disconnect()
Continue For Continue For
@ -220,4 +266,49 @@ Public Class Email
Return False Return False
End Try End Try
End Function 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 End Class