Merge branch 'master' of http://172.24.11.74:90/scm/git/DDMonorepo
This commit is contained in:
commit
6650b01b10
@ -25,6 +25,9 @@
|
|||||||
<setting name="LOG_ERRORS_ONLY" serializeAs="String">
|
<setting name="LOG_ERRORS_ONLY" serializeAs="String">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</setting>
|
</setting>
|
||||||
|
<setting name="SQLSERVER_CS" serializeAs="String">
|
||||||
|
<value>Data Source=172.24.12.41\Tests;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd</value>
|
||||||
|
</setting>
|
||||||
</DD_CommunicationService.My.MySettings>
|
</DD_CommunicationService.My.MySettings>
|
||||||
</applicationSettings>
|
</applicationSettings>
|
||||||
</configuration>
|
</configuration>
|
||||||
@ -47,6 +47,9 @@
|
|||||||
<OptionInfer>On</OptionInfer>
|
<OptionInfer>On</OptionInfer>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="DigitalData.EMLProfiler">
|
||||||
|
<HintPath>..\..\DD_EmailProfiler\App\DigitalData.EMLProfiler\bin\Debug\DigitalData.EMLProfiler.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="DigitalData.Modules.Database">
|
<Reference Include="DigitalData.Modules.Database">
|
||||||
<HintPath>..\Modules.Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
<HintPath>..\Modules.Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
|||||||
@ -98,6 +98,16 @@ Namespace My
|
|||||||
Return CType(Me("LOG_ERRORS_ONLY"),Boolean)
|
Return CType(Me("LOG_ERRORS_ONLY"),Boolean)
|
||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
<Global.System.Configuration.ApplicationScopedSettingAttribute(), _
|
||||||
|
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
|
||||||
|
Global.System.Configuration.DefaultSettingValueAttribute("Data Source=172.24.12.41\Tests;Initial Catalog=DD_ECM_TEST;Persist Security Info="& _
|
||||||
|
"True;User ID=sa;Password=dd")> _
|
||||||
|
Public ReadOnly Property SQLSERVER_CS() As String
|
||||||
|
Get
|
||||||
|
Return CType(Me("SQLSERVER_CS"),String)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
End Class
|
End Class
|
||||||
End Namespace
|
End Namespace
|
||||||
|
|
||||||
|
|||||||
@ -17,5 +17,8 @@
|
|||||||
<Setting Name="LOG_ERRORS_ONLY" Type="System.Boolean" Scope="Application">
|
<Setting Name="LOG_ERRORS_ONLY" Type="System.Boolean" Scope="Application">
|
||||||
<Value Profile="(Default)">True</Value>
|
<Value Profile="(Default)">True</Value>
|
||||||
</Setting>
|
</Setting>
|
||||||
|
<Setting Name="SQLSERVER_CS" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)">Data Source=172.24.12.41\Tests;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd</Value>
|
||||||
|
</Setting>
|
||||||
</Settings>
|
</Settings>
|
||||||
</SettingsFile>
|
</SettingsFile>
|
||||||
@ -2,27 +2,32 @@
|
|||||||
Imports DigitalData.Modules.Logging
|
Imports DigitalData.Modules.Logging
|
||||||
Imports DigitalData.Modules.Database
|
Imports DigitalData.Modules.Database
|
||||||
Imports DigitalData.Modules.Messaging
|
Imports DigitalData.Modules.Messaging
|
||||||
|
Imports DigitalData.EMLProfiler
|
||||||
Imports System.IO
|
Imports System.IO
|
||||||
Public Class MyComService
|
Public Class MyComService
|
||||||
Private _Logger As Logger
|
Private myLogger As Logger
|
||||||
Private _MyLogger As LogConfig
|
Private MyLoConfig As LogConfig
|
||||||
Private _firebird As Firebird
|
Private _firebird As Firebird
|
||||||
|
Private _MSSQL As MSSQLServer
|
||||||
Private _Email As Email
|
Private _Email As Email
|
||||||
|
Private _EmailAlt As clsEmail
|
||||||
Public Shared threadEmailQueue As BackgroundWorker
|
Public Shared threadEmailQueue As BackgroundWorker
|
||||||
Protected Overrides Sub OnStart(ByVal args() As String)
|
Protected Overrides Sub OnStart(ByVal args() As String)
|
||||||
' Code zum Starten des Dienstes hier einfügen. Diese Methode sollte Vorgänge
|
' Code zum Starten des Dienstes hier einfügen. Diese Methode sollte Vorgänge
|
||||||
' ausführen, damit der Dienst gestartet werden kann.
|
' ausführen, damit der Dienst gestartet werden kann.
|
||||||
Try
|
Try
|
||||||
_MyLogger = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"))
|
MyLoConfig = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"))
|
||||||
If My.Settings.LOG_ERRORS_ONLY = False Then
|
If My.Settings.LOG_ERRORS_ONLY = False Then
|
||||||
_MyLogger.Debug = True
|
MyLoConfig.Debug = True
|
||||||
Else
|
Else
|
||||||
_MyLogger.Debug = False
|
MyLoConfig.Debug = False
|
||||||
End If
|
End If
|
||||||
|
|
||||||
_Logger = _MyLogger.GetLogger()
|
myLogger = MyLoConfig.GetLogger()
|
||||||
_firebird = New Firebird(_MyLogger, My.Settings.FB_ConnString, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW)
|
_firebird = New Firebird(MyLoConfig, My.Settings.FB_ConnString, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW)
|
||||||
_Email = New Email(_MyLogger)
|
_Email = New Email(MyLoConfig)
|
||||||
|
_EmailAlt = New clsEmail(MyLoConfig)
|
||||||
|
_MSSQL = New MSSQLServer(MyLoConfig, My.Settings.SQLSERVER_CS)
|
||||||
If _firebird._DBInitialized = True Then
|
If _firebird._DBInitialized = True Then
|
||||||
MyComService.threadEmailQueue = New BackgroundWorker()
|
MyComService.threadEmailQueue = New BackgroundWorker()
|
||||||
MyComService.threadEmailQueue.WorkerReportsProgress = True
|
MyComService.threadEmailQueue.WorkerReportsProgress = True
|
||||||
@ -41,11 +46,11 @@ Public Class MyComService
|
|||||||
'ClassLogger.Add("Timer - Intervall: " & clsSQLITE.konf_intervall & " Minuten", False)
|
'ClassLogger.Add("Timer - Intervall: " & clsSQLITE.konf_intervall & " Minuten", False)
|
||||||
Timer1_OneMinute.Enabled = True
|
Timer1_OneMinute.Enabled = True
|
||||||
|
|
||||||
_Logger.Debug("Timer1_OneMinute started...")
|
myLogger.Debug("Timer1_OneMinute started...")
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
If Not IsNothing(_MyLogger.LogFile) And File.Exists(_MyLogger.LogFile) Then
|
If Not IsNothing(MyLoConfig.LogFile) And File.Exists(MyLoConfig.LogFile) Then
|
||||||
_Logger.Error(ex)
|
myLogger.Error(ex)
|
||||||
End If
|
End If
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
End Sub
|
||||||
@ -57,51 +62,61 @@ Public Class MyComService
|
|||||||
Protected Overrides Sub OnStop()
|
Protected Overrides Sub OnStop()
|
||||||
Try
|
Try
|
||||||
' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen.
|
' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen.
|
||||||
_Logger.Warn("Service has been stopped!")
|
myLogger.Warn("Service has been stopped!")
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
_Logger.Error(ex)
|
myLogger.Error(ex)
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
Public Sub RunThread_EmailQueue(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
|
Public Sub RunThread_EmailQueue(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
|
||||||
Try
|
Try
|
||||||
_MyLogger = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"))
|
MyLoConfig = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"))
|
||||||
_Logger = _MyLogger.GetLogger()
|
myLogger = MyLoConfig.GetLogger()
|
||||||
If My.Settings.LOG_ERRORS_ONLY = False Then
|
If My.Settings.LOG_ERRORS_ONLY = False Then
|
||||||
_MyLogger.Debug = True
|
MyLoConfig.Debug = True
|
||||||
Else
|
Else
|
||||||
_MyLogger.Debug = False
|
MyLoConfig.Debug = False
|
||||||
End If
|
End If
|
||||||
_Email = New Email(_MyLogger)
|
_Email = New Email(MyLoConfig)
|
||||||
_firebird = New Firebird(_MyLogger, My.Settings.FB_ConnString, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW)
|
_firebird = New Firebird(MyLoConfig, My.Settings.FB_ConnString, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PW)
|
||||||
If _firebird._DBInitialized = False Then
|
If _firebird._DBInitialized = False Then
|
||||||
_Logger.Warn("Firebird-DB could not be intitialized!")
|
myLogger.Warn("Firebird-DB could not be intitialized!")
|
||||||
Exit Sub
|
Exit Sub
|
||||||
End If
|
End If
|
||||||
|
SEND_FROM_FBDB()
|
||||||
|
SEND_FROM_MSSQL()
|
||||||
|
|
||||||
|
Catch ex As Exception
|
||||||
|
myLogger.Error(ex)
|
||||||
|
End Try
|
||||||
|
End Sub
|
||||||
|
Private Function SEND_FROM_FBDB()
|
||||||
|
Try
|
||||||
|
Dim oComment As String
|
||||||
Dim oSQL = "SELECT * FROM TBEDM_EMAIL_ACCOUNT WHERE ACTIVE = True"
|
Dim oSQL = "SELECT * FROM TBEDM_EMAIL_ACCOUNT WHERE ACTIVE = True"
|
||||||
Dim oDT_EMAIL_ACCOUNT As DataTable = _firebird.GetDatatable(oSQL)
|
Dim oDT_EMAIL_ACCOUNT As DataTable = _firebird.GetDatatable(oSQL)
|
||||||
If IsNothing(oDT_EMAIL_ACCOUNT) Then
|
If IsNothing(oDT_EMAIL_ACCOUNT) Then
|
||||||
_Logger.Warn("DT_EMAIL_ACCOUNT is nothing!")
|
myLogger.Warn("DT_EMAIL_ACCOUNT is nothing!")
|
||||||
Exit Sub
|
Return False
|
||||||
End If
|
End If
|
||||||
oSQL = "SELECT * FROM TBEDM_EMAIL_QUEUE WHERE EMAIL_SENT IS NULL and EMAIL_TO <> ''"
|
oSQL = "SELECT * FROM TBEDM_EMAIL_QUEUE WHERE EMAIL_SENT IS NULL and EMAIL_TO <> ''"
|
||||||
Dim oDT_EMAIL_QUEUE As DataTable = _firebird.GetDatatable(oSQL)
|
Dim oDT_EMAIL_QUEUE As DataTable = _firebird.GetDatatable(oSQL)
|
||||||
If Not IsNothing(oDT_EMAIL_QUEUE) And oDT_EMAIL_ACCOUNT.Rows.Count >= 1 Then
|
If Not IsNothing(oDT_EMAIL_QUEUE) And oDT_EMAIL_ACCOUNT.Rows.Count >= 1 Then
|
||||||
Dim oEmailTo, oSubject, oBody As String
|
Dim oEmailTo, oSubject, oBody As String
|
||||||
Dim oEMAILACCOUNT_ID, oGUID, oJOB_ID As Integer
|
Dim oEMAILACCOUNT_ID, oGUID, oJOB_ID As Integer
|
||||||
For Each oEmail_Row As DataRow In oDT_EMAIL_QUEUE.Rows
|
For Each oNewEmailTo_Row As DataRow In oDT_EMAIL_QUEUE.Rows
|
||||||
oEMAILACCOUNT_ID = oEmail_Row.Item("EMAIL_ACCOUNT_ID")
|
oEMAILACCOUNT_ID = oNewEmailTo_Row.Item("EMAIL_ACCOUNT_ID")
|
||||||
Dim oMailFrom, oMailSMTP, oMailport, oMailUser, oMailPW, oAuthType, oAttachment As String
|
Dim oMailFrom, oMailSMTP, oMailport, oMailUser, oMailPW, oAuthType, oAttachment
|
||||||
Dim oACCOUNT_MATCH As Boolean = False
|
Dim oACCOUNT_MATCH As Boolean = False
|
||||||
For Each oAccountRow As DataRow In oDT_EMAIL_ACCOUNT.Rows
|
For Each oEmailAccountRow As DataRow In oDT_EMAIL_ACCOUNT.Rows
|
||||||
If oAccountRow.Item("GUID") = oEMAILACCOUNT_ID Then
|
If oEmailAccountRow.Item("GUID") = oEMAILACCOUNT_ID Then
|
||||||
oACCOUNT_MATCH = True
|
oACCOUNT_MATCH = True
|
||||||
oMailFrom = oAccountRow.Item("EMAIL_FROM")
|
oMailFrom = oEmailAccountRow.Item("EMAIL_FROM")
|
||||||
oMailSMTP = oAccountRow.Item("SERVER_OUT")
|
oMailSMTP = oEmailAccountRow.Item("SERVER_OUT")
|
||||||
oMailport = oAccountRow.Item("PORT_OUT")
|
oMailport = oEmailAccountRow.Item("PORT_OUT")
|
||||||
oMailUser = oAccountRow.Item("EMAIL_USER")
|
oMailUser = oEmailAccountRow.Item("EMAIL_USER")
|
||||||
oAuthType = oAccountRow.Item("AUTH_TYPE")
|
oAuthType = oEmailAccountRow.Item("AUTH_TYPE")
|
||||||
oMailPW = oAccountRow.Item("EMAIL_PW")
|
oMailPW = oEmailAccountRow.Item("EMAIL_PW")
|
||||||
|
|
||||||
Dim owrapper As New clsEncryption("!35452didalog=")
|
Dim owrapper As New clsEncryption("!35452didalog=")
|
||||||
|
|
||||||
@ -109,79 +124,212 @@ Public Class MyComService
|
|||||||
If Not IsNothing(oPWPlain) Then
|
If Not IsNothing(oPWPlain) Then
|
||||||
oMailPW = oPWPlain
|
oMailPW = oPWPlain
|
||||||
Else
|
Else
|
||||||
_Logger.Warn("PWPlain is Nothing - Could not decrypt password..")
|
myLogger.Warn("PWPlain is Nothing - Could not decrypt password..")
|
||||||
Exit Sub
|
Return False
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
If IsNothing(oMailFrom) Or IsNothing(oMailPW) Then
|
If IsNothing(oMailFrom) Or IsNothing(oMailPW) Then
|
||||||
If oACCOUNT_MATCH = True Then
|
If oACCOUNT_MATCH = True Then
|
||||||
_Logger.Warn("ACCOUNT-Infos are nothing!")
|
myLogger.Warn("ACCOUNT-Infos are nothing!")
|
||||||
Else
|
Else
|
||||||
_Logger.Warn($"EMAIL_ACCOUNT_ID {oEMAILACCOUNT_ID} is not matching the configuration!")
|
myLogger.Warn($"EMAIL_ACCOUNT_ID {oEMAILACCOUNT_ID} is not matching the configuration!")
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Exit Sub
|
Return False
|
||||||
End If
|
End If
|
||||||
|
|
||||||
oGUID = oEmail_Row.Item("GUID")
|
oGUID = oNewEmailTo_Row.Item("GUID")
|
||||||
oEmailTo = oEmail_Row.Item("EMAIL_TO")
|
oEmailTo = oNewEmailTo_Row.Item("EMAIL_TO")
|
||||||
oSubject = oEmail_Row.Item("EMAIL_SUBJ")
|
myLogger.Debug($"oEmailTo: {oEmailTo}")
|
||||||
oBody = oEmail_Row.Item("EMAIL_BODY")
|
oSubject = oNewEmailTo_Row.Item("EMAIL_SUBJ")
|
||||||
oJOB_ID = oEmail_Row.Item("JOB_ID")
|
myLogger.Debug($"oSubject: {oSubject}")
|
||||||
|
oBody = oNewEmailTo_Row.Item("EMAIL_BODY")
|
||||||
|
myLogger.Debug($"oBody: {oBody}")
|
||||||
|
oJOB_ID = oNewEmailTo_Row.Item("JOB_ID")
|
||||||
|
myLogger.Debug($"oJOB_ID: {oJOB_ID}")
|
||||||
|
oAttachment = oNewEmailTo_Row.Item("EMAIL_ATTMT1")
|
||||||
|
|
||||||
If IsNothing(oEmail_Row.Item("EMAIL_ATTMT1")) Then
|
myLogger.Debug($"Now checking the attachment")
|
||||||
|
If IsDBNull(oAttachment) Then
|
||||||
oAttachment = String.Empty
|
oAttachment = String.Empty
|
||||||
Else
|
Else
|
||||||
oAttachment = oEmail_Row.Item("EMAIL_ATTMT1")
|
If oAttachment <> String.Empty Then
|
||||||
|
If File.Exists(oAttachment) = False Then
|
||||||
If File.Exists(oAttachment) = False Then
|
myLogger.Warn($"Email Attachment FB FileNotFound Exception!")
|
||||||
_Logger.Warn($"Email Attachment FileNotFound Exception!")
|
oComment = "Email Attachment FB FileNotFound Exception"
|
||||||
Exit Sub
|
oAttachment = String.Empty
|
||||||
Else
|
Else
|
||||||
_Logger.Info("Email Attachment is: {0}", oAttachment.ToString)
|
myLogger.Debug("Email Attachment is: {0}", oAttachment.ToString)
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
|
||||||
Dim link As String = "pmo://" & oJOB_ID & "-" & oEmail_Row.Item("REFERENCE1")
|
|
||||||
If oBody.Contains("[%PMOLINK_GER]") Then
|
|
||||||
oBody = oBody.Replace("[%PMOLINK_GER]", "<a href=""" & link & """>hier</a>")
|
|
||||||
End If
|
|
||||||
If oBody.Contains("[%PMOLINK_EN]") Or oBody.Contains("[%PMOLINK_US]") Then
|
|
||||||
oBody = oBody.Replace("[%PMOLINK_EN]", "<a href=""" & link & """>here</a>")
|
|
||||||
oBody = oBody.Replace("[%PMOLINK_US]", "<a href=""" & link & """>here</a>")
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If _Email.NewEmail(oEmailTo, oSubject, oBody, oMailFrom, oMailSMTP, oMailport, oMailUser, oMailPW, oAuthType, "DDEDMI_ComService", oAttachment.ToString) = True Then
|
|
||||||
Dim upd = "UPDATE TBEDM_EMAIL_QUEUE SET EMAIL_SENT = CURRENT_TIMESTAMP WHERE GUID = " & oGUID
|
'Dim link As String = "pmo://" & oJOB_ID & "-" & oNewEmailTo_Row.Item("REFERENCE1")
|
||||||
|
'If oBody.Contains("[%PMOLINK_GER]") Then
|
||||||
|
' oBody = oBody.Replace("[%PMOLINK_GER]", "<a href=""" & link & """>hier</a>")
|
||||||
|
'End If
|
||||||
|
'If oBody.Contains("[%PMOLINK_EN]") Or oBody.Contains("[%PMOLINK_US]") Then
|
||||||
|
' oBody = oBody.Replace("[%PMOLINK_EN]", "<a href=""" & link & """>here</a>")
|
||||||
|
' oBody = oBody.Replace("[%PMOLINK_US]", "<a href=""" & link & """>here</a>")
|
||||||
|
'End If
|
||||||
|
|
||||||
|
Dim oSendResult As Boolean = False
|
||||||
|
oSendResult = _EmailAlt.Email_Send_Independentsoft(oSubject, oBody, oEmailTo, oMailFrom, oMailSMTP, oMailport, oMailUser, oMailPW, oAuthType, oAttachment)
|
||||||
|
If oSendResult = False Then
|
||||||
|
oSendResult = _Email.NewEmail(oEmailTo, oSubject, oBody, oMailFrom, oMailSMTP, oMailport, oMailUser, oMailPW, oAuthType, "DDEDMI_ComService", oAttachment.ToString)
|
||||||
|
|
||||||
|
End If
|
||||||
|
If oSendResult = True Then
|
||||||
|
Dim upd = $"UPDATE TBEDM_EMAIL_QUEUE SET EMAIL_SENT = CURRENT_TIMESTAMP,COMMENT = '{oComment}' WHERE GUID = {oGUID}"
|
||||||
|
If upd.Contains(",COMMENT = ''") Then
|
||||||
|
upd.Replace(",COMMENT = ''", "")
|
||||||
|
End If
|
||||||
_firebird.ExecuteNonQuery(upd)
|
_firebird.ExecuteNonQuery(upd)
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
|
Return True
|
||||||
Else
|
Else
|
||||||
If oDT_EMAIL_ACCOUNT.Rows.Count = 0 Then
|
If oDT_EMAIL_ACCOUNT.Rows.Count = 0 Then
|
||||||
_Logger.Warn("Check the Email_Config Table TBEDM_EMAIL_ACCOUNT. The table seems to be empty.")
|
myLogger.Warn("Check the Email_Config Table TBDD_EMAIL_ACCOUNT. The table seems to be empty.")
|
||||||
ElseIf IsNothing(oDT_EMAIL_QUEUE) Then
|
ElseIf IsNothing(oDT_EMAIL_QUEUE) Then
|
||||||
_Logger.Warn($"DT_EMAIL_QUEUE is nothing: {oSQL}")
|
myLogger.Warn($"DT_EMAIL_QUEUE is nothing: {oSQL}")
|
||||||
End If
|
End If
|
||||||
|
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
_Logger.Error(ex)
|
myLogger.Error(ex)
|
||||||
End Try
|
End Try
|
||||||
End Sub
|
|
||||||
|
End Function
|
||||||
|
Private Function SEND_FROM_MSSQL()
|
||||||
|
Try
|
||||||
|
If _MSSQL.DBInitialized = False Then
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
Dim oSQL = "SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1"
|
||||||
|
Dim oDT_EMAIL_ACCOUNT As DataTable = _MSSQL.GetDatatable(oSQL)
|
||||||
|
If IsNothing(oDT_EMAIL_ACCOUNT) Then
|
||||||
|
myLogger.Warn("DT_EMAIL_ACCOUNT is nothing!")
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
oSQL = "SELECT * FROM TBEMLP_EMAIL_OUT WHERE EMAIL_SENT IS NULL and EMAIL_ADRESS <> ''"
|
||||||
|
Dim oDT_EMAIL_QUEUE As DataTable = _MSSQL.GetDatatable(oSQL)
|
||||||
|
If Not IsNothing(oDT_EMAIL_QUEUE) And oDT_EMAIL_ACCOUNT.Rows.Count >= 1 Then
|
||||||
|
Dim oEmailTo, oSubject, oBody As String
|
||||||
|
Dim oEMAILACCOUNT_ID, oGUID, oJOB_ID As Integer
|
||||||
|
For Each oEmail_Row As DataRow In oDT_EMAIL_QUEUE.Rows
|
||||||
|
oEMAILACCOUNT_ID = oEmail_Row.Item("SENDING_PROFILE")
|
||||||
|
Dim oMailFrom, oMailSMTP, oMailport, oMailUser, oMailPW, oAuthType, oAttachment
|
||||||
|
|
||||||
|
Dim oACCOUNT_MATCH As Boolean = False
|
||||||
|
For Each oAccountRow As DataRow In oDT_EMAIL_ACCOUNT.Rows
|
||||||
|
If oAccountRow.Item("GUID") = oEMAILACCOUNT_ID Then
|
||||||
|
oACCOUNT_MATCH = True
|
||||||
|
oMailFrom = oAccountRow.Item("EMAIL_FROM")
|
||||||
|
oMailSMTP = oAccountRow.Item("EMAIL_SMTP")
|
||||||
|
oMailport = oAccountRow.Item("PORT")
|
||||||
|
oMailUser = oAccountRow.Item("EMAIL_USER")
|
||||||
|
oAuthType = oAccountRow.Item("AUTH_TYPE")
|
||||||
|
oMailPW = oAccountRow.Item("EMAIL_PW")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dim owrapper As New clsEncryption("!35452didalog=")
|
||||||
|
|
||||||
|
Dim oPWPlain = owrapper.DecryptData(oMailPW)
|
||||||
|
If Not IsNothing(oPWPlain) Then
|
||||||
|
oMailPW = oPWPlain
|
||||||
|
Else
|
||||||
|
myLogger.Warn("PWPlain is Nothing - Could not decrypt password..")
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
If IsNothing(oMailFrom) Or IsNothing(oMailPW) Then
|
||||||
|
If oACCOUNT_MATCH = True Then
|
||||||
|
myLogger.Warn("ACCOUNT-Infos are nothing!")
|
||||||
|
Else
|
||||||
|
myLogger.Warn($"EMAIL_ACCOUNT_ID {oEMAILACCOUNT_ID} is not matching the configuration!")
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
|
||||||
|
oGUID = oEmail_Row.Item("GUID")
|
||||||
|
oEmailTo = oEmail_Row.Item("EMAIL_ADRESS")
|
||||||
|
myLogger.Debug($"oEmailTo: {oEmailTo}")
|
||||||
|
oSubject = oEmail_Row.Item("EMAIL_SUBJ")
|
||||||
|
myLogger.Debug($"oSubject: {oSubject}")
|
||||||
|
oBody = oEmail_Row.Item("EMAIL_BODY")
|
||||||
|
myLogger.Debug($"oBody: {oBody}")
|
||||||
|
oJOB_ID = oEmail_Row.Item("REFERENCE_ID")
|
||||||
|
myLogger.Debug($"oJOB_ID: {oJOB_ID}")
|
||||||
|
oAttachment = oEmail_Row.Item("EMAIL_ATTMT1")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Try
|
||||||
|
myLogger.Debug($"Now checking the attachment")
|
||||||
|
If IsDBNull(oAttachment) Then
|
||||||
|
oAttachment = String.Empty
|
||||||
|
Else
|
||||||
|
If oAttachment <> String.Empty Then
|
||||||
|
If File.Exists(oAttachment) = False Then
|
||||||
|
myLogger.Warn($"Email Attachment MSSQL FileNotFound Exception!")
|
||||||
|
|
||||||
|
oAttachment = String.Empty
|
||||||
|
Else
|
||||||
|
myLogger.Debug("Email Attachment is: {0}", oAttachment.ToString)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
oAttachment = String.Empty
|
||||||
|
End Try
|
||||||
|
|
||||||
|
Dim oSendResult As Boolean = False
|
||||||
|
oSendResult = _EmailAlt.Email_Send_Independentsoft(oSubject, oBody, oEmailTo, oMailFrom, oMailSMTP, oMailport, oMailUser, oMailPW, oAuthType, oAttachment)
|
||||||
|
If oSendResult = False Then
|
||||||
|
oSendResult = _Email.NewEmail(oEmailTo, oSubject, oBody, oMailFrom, oMailSMTP, oMailport, oMailUser, oMailPW, oAuthType, "DDEDMI_ComService", oAttachment.ToString)
|
||||||
|
|
||||||
|
End If
|
||||||
|
If oSendResult = True Then
|
||||||
|
Dim oUpdCommand = "UPDATE TBEMLP_EMAIL_OUT SET EMAIL_SENT = GETDATE() WHERE GUID = " & oGUID
|
||||||
|
_MSSQL.NewExecutenonQuery(oUpdCommand)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
Else
|
||||||
|
If oDT_EMAIL_ACCOUNT.Rows.Count = 0 Then
|
||||||
|
myLogger.Warn("Check the Email_Config Table TBEDM_EMAIL_ACCOUNT. The table seems to be empty.")
|
||||||
|
ElseIf IsNothing(oDT_EMAIL_QUEUE) Then
|
||||||
|
myLogger.Warn($"DT_EMAIL_QUEUE is nothing: {oSQL}")
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
Catch ex As Exception
|
||||||
|
myLogger.Error(ex)
|
||||||
|
End Try
|
||||||
|
|
||||||
|
End Function
|
||||||
#Region "*** BackgroundWorker Stop/Completed ***"
|
#Region "*** BackgroundWorker Stop/Completed ***"
|
||||||
Private Sub ThreadEMailQueue_Completed(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) 'Handles threadDateiimport.RunWorkerCompleted
|
Private Sub ThreadEMailQueue_Completed(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) 'Handles threadDateiimport.RunWorkerCompleted
|
||||||
' This event fires when the DoWork event completes
|
' This event fires when the DoWork event completes
|
||||||
Try
|
Try
|
||||||
Dim result As String = ""
|
Dim result As String = ""
|
||||||
If e.Cancelled Then
|
If e.Cancelled Then
|
||||||
_Logger.Warn("ThreadEMailQueue has been cancelled manually...")
|
myLogger.Warn("ThreadEMailQueue has been cancelled manually...")
|
||||||
|
|
||||||
ElseIf e.Error IsNot Nothing Then
|
ElseIf e.Error IsNot Nothing Then
|
||||||
_Logger.Warn("Unexpected error in running thread: " & e.Error.Message)
|
myLogger.Warn("Unexpected error in running thread: " & e.Error.Message)
|
||||||
|
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
_Logger.Error(ex)
|
myLogger.Error(ex)
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
@ -69,7 +69,7 @@ Public Class Email
|
|||||||
''' <param name="Folder">The folder to fetch messages from</param>
|
''' <param name="Folder">The folder to fetch messages from</param>
|
||||||
''' <param name="SearchCondition">Filter the search command. Defaults to `All`</param>
|
''' <param name="SearchCondition">Filter the search command. Defaults to `All`</param>
|
||||||
''' <returns>A list of Independentsoft.Email.Mime.Message objects</returns>
|
''' <returns>A list of Independentsoft.Email.Mime.Message objects</returns>
|
||||||
Public Function FetchIMAPMessages(Server As String, Port As Integer, Username As String, Password As String, Folder As String, Optional SearchCondition As S22.Imap.SearchCondition = S22.Imap.SearchCondition.All) As List(Of Message)
|
Public Function FetchIMAPMessages(Server As String, Port As Integer, Username As String, Password As String, Folder As String) As List(Of Message) ', Optional SearchCondition As S22.Imap.SearchCondition = S22.Imap.SearchCondition.All
|
||||||
Dim oMessages As New List(Of Message)
|
Dim oMessages As New List(Of Message)
|
||||||
|
|
||||||
_logger.Debug("Connecting to Server {0}:{1} with user {2}", Server, Port, Username)
|
_logger.Debug("Connecting to Server {0}:{1} with user {2}", Server, Port, Username)
|
||||||
@ -260,6 +260,8 @@ Public Class Email
|
|||||||
Public Function NewEmail(mailto As String, mailSubject As String, mailBody As String,
|
Public Function NewEmail(mailto As String, mailSubject As String, mailBody As String,
|
||||||
mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String,
|
mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String,
|
||||||
AUTH_TYPE As String, SENDER_INSTANCE As String, Optional attachmentString As String = "", Optional Test As Boolean = False)
|
AUTH_TYPE As String, SENDER_INSTANCE As String, Optional attachmentString As String = "", Optional Test As Boolean = False)
|
||||||
|
Dim myClient As Net.Mail.SmtpClient
|
||||||
|
Dim myMesssage As New MailMessage
|
||||||
Try
|
Try
|
||||||
Dim oError As Boolean = False
|
Dim oError As Boolean = False
|
||||||
Dim oReceipiants As String()
|
Dim oReceipiants As String()
|
||||||
@ -272,39 +274,38 @@ Public Class Email
|
|||||||
For Each oMailReceipiant As String In oReceipiants
|
For Each oMailReceipiant As String In oReceipiants
|
||||||
_logger.Debug($"oMailReceipiant [{oMailReceipiant}]")
|
_logger.Debug($"oMailReceipiant [{oMailReceipiant}]")
|
||||||
_logger.Debug($"mailsmtp [{mailsmtp}]")
|
_logger.Debug($"mailsmtp [{mailsmtp}]")
|
||||||
Dim sClient As Net.Mail.SmtpClient
|
|
||||||
Try
|
Try
|
||||||
sClient = New Net.Mail.SmtpClient(mailsmtp, mailport)
|
myClient = New Net.Mail.SmtpClient(mailsmtp, mailport)
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
_logger.Warn($"Could not create SMTP-Client: [{ex.Message}]")
|
_logger.Warn($"Could not create SMTP-Client: [{ex.Message}]")
|
||||||
Return False
|
Return False
|
||||||
End Try
|
End Try
|
||||||
sClient.DeliveryMethod = SmtpDeliveryMethod.Network
|
myClient.DeliveryMethod = SmtpDeliveryMethod.Network
|
||||||
|
|
||||||
Dim mymesssage As New MailMessage
|
myClient.Port = mailport
|
||||||
sClient.Port = mailport
|
|
||||||
_logger.Debug($"mailport [{mailport}]")
|
_logger.Debug($"mailport [{mailport}]")
|
||||||
If AUTH_TYPE = "SSL" Then
|
If AUTH_TYPE = "SSL" Then
|
||||||
_logger.Debug("SSL = true")
|
_logger.Debug("SSL = true")
|
||||||
sClient.EnableSsl = True
|
myClient.EnableSsl = True
|
||||||
Else
|
Else
|
||||||
_logger.Debug("SSL = false")
|
_logger.Debug("SSL = false")
|
||||||
sClient.EnableSsl = False
|
myClient.EnableSsl = False
|
||||||
End If
|
End If
|
||||||
_logger.Debug($"mailUser [{mailUser}]")
|
_logger.Debug($"mailUser [{mailUser}]")
|
||||||
sClient.Credentials = New NetworkCredential(mailUser, mailPW)
|
myClient.Credentials = New NetworkCredential(mailUser, mailPW)
|
||||||
sClient.UseDefaultCredentials = False
|
myClient.UseDefaultCredentials = False
|
||||||
|
|
||||||
If Test = True Then
|
If Test = True Then
|
||||||
mymesssage.Body = $"This is the body (text will be replaced within profile)! <br> mailsmtp: {mailsmtp} <br> mailport: {mailport} <br> mailUser: {mailUser} <br> mailPW: XXXX <br> AUTH_TYPE: {AUTH_TYPE}"
|
myMesssage.Body = $"This is the body (text will be replaced within profile)! <br> mailsmtp: {mailsmtp} <br> mailport: {mailport} <br> mailUser: {mailUser} <br> mailPW: XXXX <br> AUTH_TYPE: {AUTH_TYPE}"
|
||||||
Else
|
Else
|
||||||
mymesssage.Body = mailBody
|
myMesssage.Body = mailBody
|
||||||
End If
|
End If
|
||||||
_logger.Debug($"mailBody [{mailBody}]")
|
_logger.Debug($"mailBody [{mailBody}]")
|
||||||
'mymesssage.IsBodyHtml = True
|
'mymesssage.IsBodyHtml = True
|
||||||
Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(mymesssage.Body)
|
Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(myMesssage.Body)
|
||||||
htmlView.ContentType = New System.Net.Mime.ContentType("text/html")
|
htmlView.ContentType = New System.Net.Mime.ContentType("text/html")
|
||||||
mymesssage.AlternateViews.Add(htmlView)
|
myMesssage.AlternateViews.Add(htmlView)
|
||||||
_logger.Debug($"attachmentString [{attachmentString}]")
|
_logger.Debug($"attachmentString [{attachmentString}]")
|
||||||
If attachmentString <> "" Then
|
If attachmentString <> "" Then
|
||||||
_logger.Info($"Attachment Path is: {attachmentString}")
|
_logger.Info($"Attachment Path is: {attachmentString}")
|
||||||
@ -317,18 +318,18 @@ Public Class Email
|
|||||||
'ElseIf attment.ToLower.EndsWith("docx") Then
|
'ElseIf attment.ToLower.EndsWith("docx") Then
|
||||||
' oAttachment.ContentType = New Independentsoft.Email.Mime.ContentType("application", "MS-word")
|
' oAttachment.ContentType = New Independentsoft.Email.Mime.ContentType("application", "MS-word")
|
||||||
'End If
|
'End If
|
||||||
mymesssage.Attachments.Add(oAttachment)
|
myMesssage.Attachments.Add(oAttachment)
|
||||||
Else
|
Else
|
||||||
_logger.Debug("No Attachment.")
|
_logger.Debug("No Attachment.")
|
||||||
End If
|
End If
|
||||||
_logger.Debug($"mailfrom [{mailfrom}]")
|
_logger.Debug($"mailfrom [{mailfrom}]")
|
||||||
|
|
||||||
mymesssage.From = New MailAddress(mailfrom)
|
myMesssage.From = New MailAddress(mailfrom)
|
||||||
_logger.Debug($"mailSubject [{mailSubject}]")
|
_logger.Debug($"mailSubject [{mailSubject}]")
|
||||||
mymesssage.Subject = mailSubject
|
myMesssage.Subject = mailSubject
|
||||||
mymesssage.To.Add(New MailAddress(oMailReceipiant))
|
myMesssage.To.Add(New MailAddress(oMailReceipiant))
|
||||||
_logger.Debug($"Now Sending mail...")
|
_logger.Debug($"Now Sending mail...")
|
||||||
sClient.Send(mymesssage)
|
myClient.Send(myMesssage)
|
||||||
_logger.Debug($"Mail has been sent!")
|
_logger.Debug($"Mail has been sent!")
|
||||||
_logger.Info("Message to " & oMailReceipiant & " has been send.")
|
_logger.Info("Message to " & oMailReceipiant & " has been send.")
|
||||||
Next
|
Next
|
||||||
@ -340,6 +341,22 @@ Public Class Email
|
|||||||
|
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
_logger.Error(ex)
|
_logger.Error(ex)
|
||||||
|
Try
|
||||||
|
_logger.Info("Unexpected error in Sending smtp-Mail: ")
|
||||||
|
If Not IsNothing(myClient) Then
|
||||||
|
_logger.Info($"myClient.Host: {myClient.Host.ToString}")
|
||||||
|
_logger.Info($"myClient.Port: {myClient.Port.ToString}")
|
||||||
|
_logger.Info($"myClient.EnableSsl: {myClient.EnableSsl.ToString}")
|
||||||
|
|
||||||
|
End If
|
||||||
|
If Not IsNothing(myMesssage) Then
|
||||||
|
_logger.Info($"myMesssage.Subject: {myMesssage.Subject.ToString}")
|
||||||
|
_logger.Info($"myMesssage.Body: {myMesssage.Body.ToString}")
|
||||||
|
_logger.Info($"myMesssage.From: {myMesssage.From.ToString}")
|
||||||
|
End If
|
||||||
|
Catch e1x As Exception
|
||||||
|
|
||||||
|
End Try
|
||||||
Return False
|
Return False
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user