Messaging: Rework mail fetcher to build client adhoc

This commit is contained in:
Jonathan Jenne 2023-09-15 09:24:48 +02:00
parent b16050cfc6
commit ddffb9c4f8

View File

@ -7,7 +7,7 @@ Imports Limilabs.Mail
Namespace Mail
Public Class MailFetcher
Inherits BaseClass
Private ReadOnly MailSession As MailSession
Private MailSession As MailSession
Private ReadOnly MailBuilder As New MailBuilder
Public ReadOnly Property Connected2Server As Boolean
@ -24,35 +24,50 @@ Namespace Mail
Public Sub New(pLogConfig As LogConfig)
MyBase.New(pLogConfig)
MailSession = New MailSession(pLogConfig, New Imap)
Log.Enabled = pLogConfig.Debug
End Sub
Public Function Connect(pServer As String, pPort As Integer, pUser As String, pPassword As String, pAuthType As String) As MailSession.SessionInfo
MailSession = New MailSession(LogConfig, New Imap)
Return MailSession.ConnectToServerWithBasicAuth(pServer, pPort, pUser, pPassword, pAuthType, New MailSession.MailSessionOptions)
End Function
Public Function ConnectToO365(pUser As String, pClientId As String, pTenantId As String, pClientSecret As String)
MailSession = New MailSession(LogConfig, New Imap)
Dim oOptions = New MailSession.MailSessionOptions With {.EnableTls1_2 = True}
Return MailSession.ConnectToServerWithO365OAuth(pUser, pClientId, pTenantId, pClientSecret, oOptions)
End Function
Public Function Connect(pServer As String, pPort As Integer, pUser As String, pPassword As String, pAuthType As String, pOptions As MailSession.MailSessionOptions) As MailSession.SessionInfo
MailSession = New MailSession(LogConfig, New Imap)
Return MailSession.ConnectToServerWithBasicAuth(pServer, pPort, pUser, pPassword, pAuthType, pOptions)
End Function
Public Function Disconnect() As Boolean
If (MailSession.Session.Connected = False) Then
Return True
End If
Return MailSession.DisconnectFromServer()
End Function
Public Async Function FetchAllMails() As Task(Of List(Of IMail))
Public Async Function FetchAllMailsAsync() As Task(Of List(Of IMail))
Return Await FetchMailsAsync(Flag.All)
End Function
Public Async Function FetchUnreadMails() As Task(Of List(Of IMail))
Public Async Function FetchUnreadMailsAsync() As Task(Of List(Of IMail))
Return Await FetchMailsAsync(Flag.Unseen)
End Function
Public Function FetchAllMails() As List(Of IMail)
Return FetchMails(Flag.All)
End Function
Public Function FetchUnreadMails() As List(Of IMail)
Return FetchMails(Flag.Unseen)
End Function
Public Function ListAllMails() As List(Of Long)
Return ListMails(Flag.All)
@ -62,7 +77,34 @@ Namespace Mail
Return ListMails(Flag.Unseen)
End Function
Public Function FetchMails(pMailFlag As Flag) As List(Of IMail)
Try
If MailSession.Session.Connected Then
Dim oMailIds = ListMails(pMailFlag)
Dim oMails As New List(Of IMail)
For Each oId In oMailIds
Dim oMail As IMail = FetchMail(oId)
oMails.Add(oMail)
Next
Return oMails
Else
Logger.Error("No connection to Server. Exiting.")
Return Nothing
End If
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Async Function FetchMailsAsync(pMailFlag As Flag) As Task(Of List(Of IMail))
Try
If MailSession.Session.Connected Then
Dim oMailIds = ListMails(pMailFlag)
Dim oMails As New List(Of IMail)
@ -74,6 +116,15 @@ Namespace Mail
Next
Return oMails
Else
Logger.Error("No connection to Server. Exiting.")
Return Nothing
End If
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function ListMails(pMailFlag As Flag) As List(Of Long)