diff --git a/App/EmailProfiler.Common/clsWorkEmail.vb b/App/EmailProfiler.Common/clsWorkEmail.vb index b1e6a54..e934921 100644 --- a/App/EmailProfiler.Common/clsWorkEmail.vb +++ b/App/EmailProfiler.Common/clsWorkEmail.vb @@ -45,10 +45,11 @@ Public Class clsWorkEmail Private ReadOnly _EmailAccountID As Integer = 1 Private ReadOnly _RejectionTemplateId As Integer = 0 + Private ReadOnly _InfoTemplateId As Integer = 0 Private _worked_email As Boolean = False - Sub New(LogConf As LogConfig, ConStr As String, WmConStr As String, pUseWindream As Boolean, EmailAccountID As Integer, EmlProfPraefix As String, pRejectionTemplateId As Integer) + Sub New(LogConf As LogConfig, ConStr As String, WmConStr As String, pUseWindream As Boolean, EmailAccountID As Integer, EmlProfPraefix As String, pRejectionTemplateId As Integer, pInfoTemplateId As Integer) Try _Logger = LogConf.GetLogger _LogConfig = LogConf @@ -57,8 +58,10 @@ Public Class clsWorkEmail _UseWindream = pUseWindream _Patterns = New Patterns2(LogConf) _RejectionTemplateId = pRejectionTemplateId + _InfoTemplateId = pInfoTemplateId _Logger.Debug($"_RejectionTemplateId: {_RejectionTemplateId}") + If pUseWindream Then _windream = New clsWindream_allgemein(LogConf) _windream_index = New clsWindream_Index(LogConf) @@ -217,7 +220,32 @@ Public Class clsWorkEmail Return False End Try End Function + ''' + ''' Method to decide wether we use the old or the new + ''' Rejection E-mail method. + ''' + ''' TODO we have no information about the language of the receiver at the moment + ''' + ''' E-Mail Message ID + ''' Comment + ''' Name oder Reason + Public Function AddTrackingStatusMSSQL(pMessageId As String, pSTATE_TITLE As String, pSTATE_TITLE1 As String, pCOMMENT As String, pADDEDWHO As String) As Boolean + Dim oInsert = $"INSERT INTO [dbo].[TBEMLP_HISTORY_STATE] + ([MESSAGE_ID] + ,[STATE_TITLE] + ,[STATE_TITLE1] + ,[COMMENT] + ,ADDED_WHO) + VALUES + ('{pMessageId}' + ,'{pSTATE_TITLE}' + ,'{pSTATE_TITLE1}' + ,'{pCOMMENT}' + ,'{pADDEDWHO}')" + Return _DB_MSSQL.ExecuteNonQuery(oInsert) + + End Function ''' ''' Method to decide wether we use the old or the new ''' Rejection E-mail method. @@ -810,11 +838,21 @@ Public Class clsWorkEmail oATTFilename = oAttachment.SafeFileName.ToString.ToLower Dim oValidExtensions = New List(Of String) From {"pdf", "xls", "xlsx", "doc", "docx", "ppt", "pptx"} + Dim oGraphicExtensions = New List(Of String) From {"jpg", "bmp", "jpg", "gif", "xml"} Dim oValidExt = oValidExtensions.Any(Function(ext) oATTFilename.EndsWith(ext)) If oValidExt = False Then _Logger.Info("Invalid FileExtension [{0}]", oATTFilename) + Dim GraphicExt = oGraphicExtensions.Any(Function(ext) oATTFilename.EndsWith(ext)) + If GraphicExt = False Then + Dim oInfo = $"Consistency or extension of attached file {oATTFilename} is not ok." + AddTrackingStatusMSSQL(CurrentMail.MessageId, oInfo, "PDF CONSISTENCY NOT OK", "Info GUI", "EML_PROF_EXTR_ATT1") + AddToEmailQueueMSSQL(CurrentMail.MessageId, oInfo, "PDF CONSISTENCY NOT OK", _EmailAccountID, + _InfoTemplateId, ErrorCode.PDFStructureCorrupt, oATTFilename, "") + + End If Continue For + End If Dim oAttachmentFilePath = "" @@ -850,16 +888,12 @@ Public Class clsWorkEmail Dim oStatus As GdPictureStatus = oGdPicturePDF.LoadFromFile(oAttachmentFilePath, True) If oStatus <> GdPictureStatus.OK Then oPDFConsistent = False - 'ABLEHNUNG da PDF ungültig - MESSAGE_ERROR = True - System.IO.File.Delete(oAttachmentFilePath) - Dim oResult = $"PDF CONSISTENCY of File {oATTFilename} IS NOT OK " - 'insert history und exit - InsertHistoryEntryWithStatus(CurrentMail, "REJECTED", oResult) + Dim oResult = $"PDF-Consistency of attached file {oATTFilename} is not ok. ({oStatus.ToString})" + AddTrackingStatusMSSQL(CurrentMail.MessageId, oResult, "PDF CONSISTENCY NOT OK", "Info GUI", "EML_PROF_EXTR_ATT2") AddToEmailQueueMSSQL(CurrentMail.MessageId, oResult, "PDF CONSISTENCY NOT OK", _EmailAccountID, - _RejectionTemplateId, ErrorCode.PDFStructureCorrupt, oATTFilename, "") - Exit For - + _InfoTemplateId, ErrorCode.PDFStructureCorrupt, oATTFilename, "") + System.IO.File.Delete(oAttachmentFilePath) + Continue For Else Dim embeddedFileCount As Integer = oGdPicturePDF.GetEmbeddedFileCount() If embeddedFileCount > 0 Then @@ -872,7 +906,14 @@ Public Class clsWorkEmail oValidExt = oValidExtensions.Any(Function(ext) oEmbAttName.EndsWith(ext)) If oValidExt = False Then - _Logger.Debug("Invalid FileExtension [{0}]", oEmbAttName) + _Logger.Info("Invalid FileExtension of embedded file [{0}]", oEmbAttName) + Dim GraphicExt = oGraphicExtensions.Any(Function(ext) oEmbAttName.EndsWith(ext)) + If GraphicExt = False Then + Dim oInfo = $"Consistency or extension of attached file [{oEmbAttName}] is not ok." + AddTrackingStatusMSSQL(CurrentMail.MessageId, oInfo, "Extension invalid", "Info GUI", "EML_PROF_EXTR_ATT3") + AddToEmailQueueMSSQL(CurrentMail.MessageId, oInfo, "Extension invalid", _EmailAccountID, + _InfoTemplateId, ErrorCode.PDFStructureCorrupt, oEmbAttName, "") + End If Continue For End If If oGdPicturePDF.GetStat() = GdPictureStatus.OK Then @@ -880,15 +921,12 @@ Public Class clsWorkEmail Dim status As GdPictureStatus = oGdPicturePDF.ExtractEmbeddedFile(0, FileData) If status <> GdPictureStatus.OK Or FileSize = 0 Then oPDFConsistent = False - 'ABLEHNUNG da PDF ungültig - MESSAGE_ERROR = True - System.IO.File.Delete(oAttachmentFilePath) - Dim oResult = $"Consistency or PDF-State of embedded file [{oEmbAttName}] IS NOT OK " - 'insert history und exit - InsertHistoryEntryWithStatus(CurrentMail, "REJECTED", oResult) - AddToEmailQueueMSSQL(CurrentMail.MessageId, oResult, "Consistency or PDF-State Embedded file NOT OK", _EmailAccountID, - _RejectionTemplateId, ErrorCode.PDFStructureCorrupt, oATTFilename, "") - Exit For + + Dim oResult = $"Consistency or PDF-State of embedded file [{oEmbAttName}] is not ok." + AddTrackingStatusMSSQL(CurrentMail.MessageId, oResult, "PDF CONSISTENCY EMBEDDED FILE NOT OK", "Info GUI", "EML_PROF_EXTR_ATT4") + AddToEmailQueueMSSQL(CurrentMail.MessageId, oResult, "PDF CONSISTENCY EMBEDDED FILE NOT OK", _EmailAccountID, + _InfoTemplateId, ErrorCode.PDFStructureCorrupt, oEmbAttName, "") + Continue For End If End If End If @@ -900,19 +938,22 @@ Public Class clsWorkEmail End If - Dim oFileLenth As Long = oFileInfo1.Length - If oFileLenth > 2 Then + Dim oFileLength As Long = oFileInfo1.Length + If oFileLength > 2 Then _Logger.Info(String.Format("Attachment saved to [{0}]", oAttachmentFilePath)) InsertAttachmentHistoryEntry(pCurrentMail, oAttachment.SafeFileName, oAttachmentFileName) oAttachmentCount += 1 Else - _Logger.Warn($"##!! oFileLenth for AttachmentObjects is <2 !!##") + _Logger.Warn($"##!! oFileLength for AttachmentObjects is <2 !!##") + Dim oResult = $"Consistency of attached file [{oAttachment.SafeFileName}] is not ok." + AddTrackingStatusMSSQL(CurrentMail.MessageId, oResult, "CONSISTENCY ATTACHED FILE NOT OK", "Info GUI", "EML_PROF_EXTR_ATT5") + AddToEmailQueueMSSQL(CurrentMail.MessageId, oResult, "CONSISTENCY ATTACHED FILE NOT OK", _EmailAccountID, + _InfoTemplateId, ErrorCode.PDFStructureCorrupt, oAttachment.SafeFileName, "") Try System.IO.File.Delete(oAttachmentFilePath) Catch ex As Exception _Logger.Error(ex) End Try - MESSAGE_ERROR = True End If Catch ex As Exception @@ -963,7 +1004,7 @@ Public Class clsWorkEmail _Logger.Error(ex) _Logger.Warn("Could not delete the tempworkfile : [{0}]", _file) End Try - ElseIf pACT = "Move" Then + ElseIf pACT = "move" Then IO.File.Move(_file, _file.Replace("\Temp", "")) End If diff --git a/App/EmailProfiler.Common/clsWorker.vb b/App/EmailProfiler.Common/clsWorker.vb index dcf38a3..65f36a0 100644 --- a/App/EmailProfiler.Common/clsWorker.vb +++ b/App/EmailProfiler.Common/clsWorker.vb @@ -25,7 +25,7 @@ Public Class clsWorker Private ReadOnly LocalEmlFile As String = "" Sub New(pLogConfig As LogConfig, pConnectionString As String, pWindreamConnectionString As String, pPollProfileId As Integer, pUseWindream As Boolean, - pEmailAccountID As Integer, pEmailPrefix As String, pEmailLimitationSender As String, pRejectionTemplateId As Integer, Optional pLocalEML As String = "") + pEmailAccountID As Integer, pEmailPrefix As String, pEmailLimitationSender As String, pRejectionTemplateId As Integer, pInfoTemplateId As Integer, Optional pLocalEML As String = "") Logger = pLogConfig.GetLogger 'ClassEmailImap = New clsEmailIMAP(pLogConfig) Fetcher = New MailFetcher(pLogConfig) @@ -43,7 +43,7 @@ Public Class clsWorker ClassWindreamIndex = New clsWindream_Index(pLogConfig) End If - ClassWorkMail = New clsWorkEmail(pLogConfig, pConnectionString, pWindreamConnectionString, pUseWindream, pEmailAccountID, pEmailPrefix, pRejectionTemplateId) + ClassWorkMail = New clsWorkEmail(pLogConfig, pConnectionString, pWindreamConnectionString, pUseWindream, pEmailAccountID, pEmailPrefix, pRejectionTemplateId, pInfoTemplateId) Encryption = New clsEncryption("!35452didalog=", pLogConfig) diff --git a/App/EmailProfiler.Form/Config.vb b/App/EmailProfiler.Form/Config.vb index 0bfcce9..ae1b2a6 100644 --- a/App/EmailProfiler.Form/Config.vb +++ b/App/EmailProfiler.Form/Config.vb @@ -15,6 +15,7 @@ Public Class Config ''' Siehe Tabelle DD_ECM.dbo.TBDD_EMAIL_TEMPLATE ''' Public Property RejectionTemplateId As Integer = 0 + Public Property InfoTemplateId As Integer = 0 Public Property EmailTestReceiver As String = "" Public Property EmailTestHTML As String = "" diff --git a/App/EmailProfiler.Form/frmMain.vb b/App/EmailProfiler.Form/frmMain.vb index e991c0a..be91aab 100644 --- a/App/EmailProfiler.Form/frmMain.vb +++ b/App/EmailProfiler.Form/frmMain.vb @@ -341,7 +341,7 @@ Public Class frmMain LogConfig.Debug = True Dim _work As New clsWorker(LogConfig, _SQLServerConString, _DBConfig.WindreamConnectionString, GUIDTextBox.Text, ConfigManager.Config.UseWindream, ToolStripEmailAccountID2.Text, "EmailProfilerTestClient", - ConfigManager.Config.EmailSenderLimitation, ConfigManager.Config.RejectionTemplateId) + ConfigManager.Config.EmailSenderLimitation, ConfigManager.Config.RejectionTemplateId, ConfigManager.Config.InfoTemplateId) _work.Start_WorkingProfiles() Else @@ -349,7 +349,7 @@ Public Class frmMain Logger.Info($"## Manual working on file {ofile} ... ") Dim _work As New clsWorker(LogConfig, _SQLServerConString, _DBConfig.WindreamConnectionString, GUIDTextBox.Text, ConfigManager.Config.UseWindream, ToolStripEmailAccountID2.Text, "EmailProfilerTestClient", - ConfigManager.Config.EmailSenderLimitation, ConfigManager.Config.RejectionTemplateId, ofile) + ConfigManager.Config.EmailSenderLimitation, ConfigManager.Config.RejectionTemplateId, ConfigManager.Config.InfoTemplateId, ofile.ToString) _work.Start_WorkingProfiles(True) Next