Imports DigitalData.EMLProfiler.ClassCurrent Imports Independentsoft.Email.Mime Imports DigitalData.Modules.Logging Public Class clsWorker Private Shared Logger As Logger Private MyLogger As LogConfig Private _email As clsEmail Private _emailIMAP As clsEmailIMAP Private _Database As clsDatabase Private _windream As clsWindream_allgemein Private _windream_index As clsWindream_Index Private _workmail As clsWorkEmail Private _wrapper As clsEncryption Private _POLL_PROFILEID As Integer = 0 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) Logger = LogConf.GetLogger _email = New clsEmail(LogConf) _emailIMAP = New clsEmailIMAP(LogConf) _Database = New clsDatabase(LogConf, ConStr) cs = ConStr _windream = New clsWindream_allgemein(LogConf) _windream_index = New clsWindream_Index(LogConf) _workmail = New clsWorkEmail(LogConf, ConStr, FB_DATASOURCE, FB_DATABASE, FB_USER, FB_PW) _wrapper = New clsEncryption("!35452didalog=", LogConf) _POLL_PROFILEID = POLL_PROFILEID End Sub Public Sub Start_WorkingProfiles() Try If _Database.Init(cs) = True Then Logger.Debug("now windream_init...... ") If _windream.Init = True Then Logger.Debug("windream_initialized!") Dim osql As String = "SELECT * FROM TBEMLP_POLL_PROFILES" If _POLL_PROFILEID = 0 Then osql &= " WHERE ACTIVE = 1 order by SEQUENCE" Else osql &= " WHERE GUID = " & _POLL_PROFILEID End If Dim DT_TBDD_EMAIL = _Database.Return_Datatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1") Dim DT_PROFILES = _Database.Return_Datatable(osql) If Not IsNothing(DT_PROFILES) Then If DT_PROFILES.Rows.Count > 0 Then Logger.Debug("count of active profiles: " & DT_PROFILES.Rows.Count.ToString) For Each DR As DataRow In DT_PROFILES.Rows CURRENT_PROFILE_GUID = DR.Item("GUID") DT_POLL_PROCESS = Nothing Dim sql = String.Format("SELECT * FROM TBEMLP_POLL_PROCESS WHERE PROFILE_ID = {0} AND ACTIVE = 1", CURRENT_PROFILE_GUID) DT_POLL_PROCESS = _Database.Return_Datatable(sql) If Not IsNothing(DT_POLL_PROCESS) Then If DT_POLL_PROCESS.Rows.Count = 0 Then Logger.Info("No processes configured for this Email-Profile - " & sql) Continue For Else DT_STEPS = Nothing DT_STEPS = _Database.Return_Datatable(String.Format("SELECT T.* FROM TBEMLP_POLL_STEPS T,TBEMLP_POLL_PROCESS T1 WHERE T.PROCESS_ID = T1.GUID AND T1.PROFILE_ID = {0} AND T1.ACTIVE = 1", CURRENT_PROFILE_GUID)) End If Else Logger.Warn("DT_POLL_PROCESS is nothing") Continue For End If CURRENT_EMAIL_GUID = 0 MAIL_FROM = "" MAIL_SERVER = "" MAIL_USER = "" MAIL_USER_PW = "" CURRENT_POLL_TYPE = DR.Item("POLL_TYPE") Logger.Info(String.Format("Working on profile: ({0}-{1}-{2}) ", DR.Item("GUID"), DR.Item("PROFILE_NAME"), CURRENT_POLL_TYPE)) CURRENT_EMAIL_GUID = DR.Item("EMAIL_CONF_ID") Dim EMAIL_PROF_TABLE As DataTable = DT_TBDD_EMAIL 'Presuming the DataTable has a column named Date. Dim expression As String expression = "GUID = " & CURRENT_EMAIL_GUID 'Filter the rows using Select() method of DataTable Dim FilteredRows As DataRow() = EMAIL_PROF_TABLE.Select(expression) If FilteredRows.Length = 1 Then For Each row As DataRow In FilteredRows MAIL_FROM = row("EMAIL_FROM") MAIL_SERVER = row("EMAIL_SMTP") MAIL_USER = row("EMAIL_USER") MAIL_USER_PW = row("EMAIL_PW") MAIL_PORT = row("PORT") Logger.Debug(String.Format("{0}-{1}", MAIL_FROM, MAIL_SERVER)) Dim PWPlain = _wrapper.DecryptData(MAIL_USER_PW) If Not IsNothing(PWPlain) Then If PWPlain <> "" Then MAIL_USER_PW = PWPlain Else Logger.Warn("PWPlain is string.empty - Could not decrypt passwort") End If Else Logger.Warn("PWPlain is nothing - Could not decrypt passwort") End If Next MAIL_LIST.Clear() If MAIL_SERVER <> "" Then Dim pollresult As Boolean = False Select Case CURRENT_POLL_TYPE Case "POP" pollresult = _email.POP3_COLLECT() Case "IMAP" pollresult = _emailIMAP.IMAP_COLLECT() End Select If pollresult = False Then Logger.Warn(String.Format("Error while polling emails....")) End If If MAIL_LIST.Count() > 0 Then Logger.Info(String.Format("Worked/Pulled: {0} E-Mails", MAIL_LIST.Count())) For Each pulled_msg As Message In MAIL_LIST If _workmail.WORK_MAIL(pulled_msg) = True Then End If Next Else Logger.Info(String.Format("No emails for profile!")) End If Else Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found!") End If _Database.Execute_non_Query("UPDATE TBEMLP_POLL_PROFILES SET LAST_TICK = GETDATE() WHERE GUID = " & DR.Item("GUID").ToString) Else Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found! Check wether Email-Profile is active!") End If Next Try 'Delete all Tempfiles For Each _file In TEMP_FILES System.IO.File.Delete(_file) Next Catch ex As Exception End Try Else Logger.Info("No active profiles") End If End If Else Logger.Info("windream could not be initialized!!") End If _Database.Execute_non_Query("UPDATE TBEMLP_CONFIG SET LAST_TICK = GETDATE() WHERE GUID = 1") End If Catch ex As Exception Logger.Error(ex) End Try End Sub End Class