This commit is contained in:
Jonathan Jenne
2022-08-04 11:09:10 +02:00
28 changed files with 513 additions and 104 deletions

View File

@@ -27,6 +27,7 @@ Public Class clsEmailIMAP
_limilab.InitIMAP(True, Server, Port, Username, Password, AuthType)
Dim oListuids As New List(Of Long)
oListuids = _limilab.IMAPGetMessageIDs_AllMails()
If IsNothing(oListuids) Then
Return False
Else
@@ -43,11 +44,7 @@ Public Class clsEmailIMAP
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

View File

@@ -279,12 +279,13 @@ Public Class clsWorkEmail
WM_REFERENCE_INDEX = oDataRow("WM_REFERENCE_INDEX")
Catch ex As Exception
Logger.Debug($"Attention WM_REFERENCE_INDEX seems to be Empty/null: {ex.Message}")
WM_REFERENCE_INDEX = Nothing
WM_REFERENCE_INDEX = ""
End Try
Try
WM_VECTOR_LOG = oDataRow("WM_VECTOR_LOG")
Catch ex As Exception
WM_VECTOR_LOG = Nothing
Logger.Debug($"Attention WM_VECTOR_LOG seems to be Empty/null: {ex.Message}")
WM_VECTOR_LOG = ""
End Try
WM_OBJEKTTYPE = oDataRow("WM_OBJEKTTYPE")

View File

@@ -17,18 +17,19 @@ Public Class clsWorker
Private _workmail As clsWorkEmail
Private _wrapper As clsEncryption
Private _POLL_PROFILEID As Integer = 0
Private Eml_Limitation_Sender As String = ""
Dim cs As String
Sub New(LogConf As LogConfig, ConStr As String, POLL_PROFILEID As Integer, FB_DATASOURCE As String, FB_DATABASE As String, FB_USER As String, FB_PW As String, USE_WM As Boolean, EmailAccountID As Integer, EmlProfPraefix As String, Optional plocaleml As String = "")
Sub New(EML_LIMITATION As String, LogConf As LogConfig, ConStr As String, POLL_PROFILEID As Integer, FB_DATASOURCE As String, FB_DATABASE As String, FB_USER As String, FB_PW As String, USE_WM As Boolean, EmailAccountID As Integer, EmlProfPraefix As String, Optional plocaleml As String = "")
MyLogConfig = LogConf
Logger = LogConf.GetLogger
_emailIMAP = New clsEmailIMAP(LogConf, ConStr)
_Database = New clsDatabase(LogConf, ConStr)
cs = ConStr
_USE_WM = USE_WM
Eml_Limitation_Sender = EML_LIMITATION
If _USE_WM Then
_windream = New clsWindream_allgemein(LogConf)
_windream_index = New clsWindream_Index(LogConf)
_windream_index = New clsWindream_Index(LogConf)
End If
_workmail = New clsWorkEmail(LogConf, ConStr, FB_DATASOURCE, FB_DATABASE, FB_USER, FB_PW, USE_WM, EmailAccountID, EmlProfPraefix)
@@ -129,14 +130,11 @@ Public Class clsWorker
Dim pollresult As Boolean = False
If LocalEmail = True Then
pollresult = True
Else
Select Case CURRENT_POLL_TYPE
Case "POP"
'pollresult = _email.POP3_COLLECT()
Case "IMAP"
'pollresult = _emailIMAP.IMAP_COLLECT()
'pollresult = _emailIMAP.FetchIMAPMessagesIsoft(MAIL_SERVER, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_INBOX_NAME, MAIL_ARCHIVE_FOLDER)
pollresult = _emailIMAP.FetchIMAPMessagesLimilab(MAIL_SERVER, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_AUTHTYPE)
End Select
End If
@@ -150,10 +148,31 @@ Public Class clsWorker
Else
Try
Logger.Info(String.Format("Pulled: [{0}] E-Mails", CURRENT_WORKMAIL_UID_LIST.Count()))
Dim LIMIT_EMAIL_FROM As Boolean = False
If Eml_Limitation_Sender.Contains("@") Then
LIMIT_EMAIL_FROM = True
Logger.Info("####################################")
Logger.Info($"LIMIT_EMAIL_FROM is ACTIVE - EMAIL_FROM = [{Eml_Limitation_Sender}]")
Logger.Info("####################################")
Logger.Debug("####################################")
Logger.Debug($"LIMIT_EMAIL_FROM is ACTIVE - EMAIL_FROM = [{Eml_Limitation_Sender}]")
Logger.Debug("####################################")
End If
For Each oUID In CURRENT_WORKMAIL_UID_LIST
Dim oEml = CURRENT_ImapObject.GetMessageByUID(oUID)
Dim oEmail As IMail = New MailBuilder().CreateFromEml(oEml)
If Not IsNothing(oEmail) Then
If LIMIT_EMAIL_FROM Then
Dim oEmailFrom As String
For Each m As MailBox In oEmail.From
oEmailFrom = m.Address
Next
If oEmailFrom <> Eml_Limitation_Sender Then
Logger.Debug($"Skipping email {oEmailFrom} ...Subject [{oEmail.Subject}]")
Continue For
End If
End If
If _workmail.WorkEmailMessage(oEmail, oUID) = True Then
If ClassCurrent.CURRENT_DEBUG_LOCAL_EMAIL = "" Then
EMAIL_DELETE()