diff --git a/App/EmailProfiler.Common/Data/EmailAttachment.vb b/App/EmailProfiler.Common/Data/EmailAttachment.vb index e6b64f6..32092e8 100644 --- a/App/EmailProfiler.Common/Data/EmailAttachment.vb +++ b/App/EmailProfiler.Common/Data/EmailAttachment.vb @@ -8,9 +8,9 @@ Public Class EmailAttachment Public FileStatus As GdPictureStatus = GdPictureStatus.OK - Public IsValidExtension As Boolean = True - Public SendInfoMailNecessary As Boolean = False + Public IsAttachmentValid As Boolean = True Public ErrorCodeValue As ErrorCode = ErrorCode.Unknown + Public ErrorCodeComment As String = "" Public EmbeddedFiles As List(Of EmailAttachment) = New List(Of EmailAttachment) diff --git a/App/EmailProfiler.Common/EmailProfiler.Common.vbproj b/App/EmailProfiler.Common/EmailProfiler.Common.vbproj index 848ac6f..7367dac 100644 --- a/App/EmailProfiler.Common/EmailProfiler.Common.vbproj +++ b/App/EmailProfiler.Common/EmailProfiler.Common.vbproj @@ -50,22 +50,22 @@ ..\packages\AE.Net.Mail.1.7.10.0\lib\net45\AE.Net.Mail.dll - ..\..\..\2_DLL Projekte\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll + ..\..\..\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll - ..\..\..\2_DLL Projekte\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll + ..\..\..\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll - ..\..\..\2_DLL Projekte\DDModules\Language\bin\Debug\DigitalData.Modules.Language.dll + ..\..\..\DDModules\Language\bin\Debug\DigitalData.Modules.Language.dll - ..\..\..\2_DLL Projekte\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll + ..\..\..\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll - ..\..\..\2_DLL Projekte\DDModules\Messaging\bin\Debug\DigitalData.Modules.Messaging.dll + ..\..\..\DDModules\Messaging\bin\Debug\DigitalData.Modules.Messaging.dll - ..\..\..\2_DLL Projekte\DDModules\Patterns\bin\Debug\DigitalData.Modules.Patterns.dll + ..\..\..\DDModules\Patterns\bin\Debug\DigitalData.Modules.Patterns.dll ..\packages\GdPicture.14.2.90\lib\net462\GdPicture.NET.14.dll diff --git a/App/EmailProfiler.Common/Enum/ErrorCode.vb b/App/EmailProfiler.Common/Enum/ErrorCode.vb index 50409a3..e15a413 100644 --- a/App/EmailProfiler.Common/Enum/ErrorCode.vb +++ b/App/EmailProfiler.Common/Enum/ErrorCode.vb @@ -2,6 +2,6 @@ Unknown = 0 NoAttachments = 10001 SenderValidationFailed = 10002 - PDFStructureCorrupt = 10003 - FileExtensionNotValid = 10004 + EmbeddedFileAttachmentCorrupt = 10003 + NormalFileAttachmentCorrupt = 10004 ' Info Mail End Enum diff --git a/App/EmailProfiler.Common/clsWorkEmail.vb b/App/EmailProfiler.Common/clsWorkEmail.vb index 3ec86b8..44c391c 100644 --- a/App/EmailProfiler.Common/clsWorkEmail.vb +++ b/App/EmailProfiler.Common/clsWorkEmail.vb @@ -227,12 +227,29 @@ Public Class clsWorkEmail End If ' Jetzt werden die ggf gefundenen Attachment-Fehler überprüft und verarbeitet - SendMailToSenderIfAttachmentsAreNotValid() + Dim oNormalAttachmentsNotValid As Boolean = False + Dim oEmbeddedAttachmentsNotValid As Boolean = False + + oEmbeddedAttachmentsNotValid = EmailAttachments. + Where(Function(att) att.EmbeddedFiles.Count > 0). + Any(Function(emb) emb.EmbeddedFiles.Any(Function(ext) ext.IsAttachmentValid = False)) + + oNormalAttachmentsNotValid = EmailAttachments.Any(Function(ext) ext.IsAttachmentValid = False) + + If oEmbeddedAttachmentsNotValid = True Then + SendRejectionMailToSenderIfEmbeddedAttachmentsAreNotValid() + ElseIf oNormalAttachmentsNotValid = True Then + SendInfoMailToSenderIfNormalAttachmentsAreNotValid() + End If + Return True End If End If + ' Wenn er bis hierin kommt, wird es schon gepasst haben + Return True + Catch ex As Exception _Logger.Error(ex) Return False @@ -241,16 +258,32 @@ Public Class clsWorkEmail ''' ''' Wenn beim Herauslösen der Attachments festgestellt wurde, - ''' das ein Teil der Attachments fehlerhaft war, wird der Absender hier + ''' das ein Teil der _normalen_ Attachments fehlerhaft war, wird der Absender hier ''' darüber informiert. ''' - Private Sub SendMailToSenderIfAttachmentsAreNotValid() + Private Sub SendInfoMailToSenderIfNormalAttachmentsAreNotValid() Dim oHtmlFilenameList As String = GetHtmlFilenameList() If oHtmlFilenameList.IsNotNullOrEmpty() Then - AddToEmailQueueMSSQL(CurrentMail.MessageId, "", "Attachment invalid", _EmailAccountID, _InfoTemplateId, ErrorCode.PDFStructureCorrupt, oHtmlFilenameList, "") + AddToEmailQueueMSSQL(CurrentMail.MessageId, "", "Attachment invalid", _EmailAccountID, _InfoTemplateId, ErrorCode.NormalFileAttachmentCorrupt, oHtmlFilenameList, "") + + End If + End Sub + + ''' + ''' Wenn beim Herauslösen der Attachments festgestellt wurde, + ''' das ein Teil der _normalen_ Attachments fehlerhaft war, wird der Absender hier + ''' darüber informiert. + ''' + Private Sub SendRejectionMailToSenderIfEmbeddedAttachmentsAreNotValid() + + Dim oHtmlFilenameList As String = GetHtmlFilenameList() + + If oHtmlFilenameList.IsNotNullOrEmpty() Then + + AddToEmailQueueMSSQL(CurrentMail.MessageId, "", "Attachment invalid", _EmailAccountID, _RejectionTemplateId, ErrorCode.EmbeddedFileAttachmentCorrupt, oHtmlFilenameList, "") End If End Sub @@ -261,14 +294,15 @@ Public Class clsWorkEmail ''' Private Function GetHtmlFilenameList() As String Dim filenameHtmlString As String = String.Empty - Dim oComment As String = String.Empty For Each attachmentItem In EmailAttachments - If attachmentItem.SendInfoMailNecessary = True Then + Dim oEmbeddedAttachmentsInvalid As Boolean = False + oEmbeddedAttachmentsInvalid = attachmentItem.EmbeddedFiles.Any(Function(emb) emb.IsAttachmentValid = False) - oComment = GetErrorCodeComment(attachmentItem.ErrorCodeValue) - AddTrackingStatusMSSQL(CurrentMail.MessageId, attachmentItem.OrgFileName, "FILE CONSISTENCY NOT OK", oComment, "EMail Profiler") + If attachmentItem.IsAttachmentValid = False Or oEmbeddedAttachmentsInvalid = True Then + + AddTrackingStatusMSSQL(CurrentMail.MessageId, attachmentItem.OrgFileName, "FILE CONSISTENCY NOT OK", attachmentItem.ErrorCodeComment, "EMail Profiler") filenameHtmlString += "
  • " + attachmentItem.OrgFileName + "
  • " End If @@ -278,10 +312,9 @@ Public Class clsWorkEmail If attachmentItem.EmbeddedFiles.Count > 0 Then For Each embeddedItem In attachmentItem.EmbeddedFiles - If embeddedItem.SendInfoMailNecessary = True Then + If embeddedItem.IsAttachmentValid = False Then - oComment = GetErrorCodeComment(embeddedItem.ErrorCodeValue) - AddTrackingStatusMSSQL(CurrentMail.MessageId, embeddedItem.OrgFileName, "EMBEDDED FILE CONSISTENCY NOT OK", oComment, "EMail Profiler") + AddTrackingStatusMSSQL(CurrentMail.MessageId, embeddedItem.OrgFileName, "EMBEDDED FILE CONSISTENCY NOT OK", embeddedItem.ErrorCodeComment, "EMail Profiler") embeddedFilenamesHtmlString += "
  • " + embeddedItem.OrgFileName + "
  • " End If @@ -305,19 +338,6 @@ Public Class clsWorkEmail Return filenameHtmlString End Function - Private Function GetErrorCodeComment(errorCodeValue As ErrorCode) As String - - Dim retValue As String = String.Empty - - If errorCodeValue = ErrorCode.FileExtensionNotValid Then - retValue = "File Extension not valid" - ElseIf errorCodeValue = ErrorCode.PDFStructureCorrupt Then - retValue = "PDF Structure corrupt" - End If - - Return retValue - End Function - ''' ''' Method to decide wether we use the old or the new ''' Rejection E-mail method. @@ -927,6 +947,7 @@ Public Class clsWorkEmail EmailAttachments.Add(oEmailAttachment) If ValidateFileExtension(oEmailAttachment) = False Then + oEmailAttachment.ErrorCodeValue = ErrorCode.NormalFileAttachmentCorrupt Continue For End If @@ -969,8 +990,9 @@ Public Class clsWorkEmail oAttachmentCount -= 1 CleanUpFilePath(oEmailAttachment.DestFilePath) oEmailAttachment.FileStatus = oStatus - oEmailAttachment.ErrorCodeValue = ErrorCode.PDFStructureCorrupt - oEmailAttachment.SendInfoMailNecessary = True + oEmailAttachment.ErrorCodeValue = ErrorCode.NormalFileAttachmentCorrupt + oEmailAttachment.ErrorCodeComment = "PDF Structure corrupt" + oEmailAttachment.IsAttachmentValid = False MESSAGE_ERROR = True Continue For @@ -1014,6 +1036,7 @@ Public Class clsWorkEmail oEmbeddedFile.FileStatus = pGDPicturePDF.GetStat() If oEmbeddedFile.FileStatus = GdPictureStatus.OK Then If ValidateFileExtension(oEmbeddedFile) = False Then + oEmbeddedFile.ErrorCodeValue = ErrorCode.EmbeddedFileAttachmentCorrupt Continue For End If @@ -1024,8 +1047,9 @@ Public Class clsWorkEmail oEmbeddedFile.FileStatus = status If status <> GdPictureStatus.OK Or FileSize = 0 Then - oEmbeddedFile.ErrorCodeValue = ErrorCode.PDFStructureCorrupt - oEmbeddedFile.SendInfoMailNecessary = True + oEmbeddedFile.ErrorCodeValue = ErrorCode.EmbeddedFileAttachmentCorrupt + oEmbeddedFile.ErrorCodeComment = "PDF Structure corrupt" + oEmbeddedFile.IsAttachmentValid = False Continue For End If End If @@ -1094,11 +1118,10 @@ Public Class clsWorkEmail Dim oIsGraphicExtension = _GraphicExtensions.Any(Function(ext) lowerFilename.EndsWith(ext)) If oIsValidExtension = False Then - pAttachmentData.IsValidExtension = False If oIsGraphicExtension = False Then _Logger.Warn("File has no valid extension, and it has no graphic extension. In this case we have to inform the sender!") - pAttachmentData.SendInfoMailNecessary = True - pAttachmentData.ErrorCodeValue = ErrorCode.FileExtensionNotValid + pAttachmentData.IsAttachmentValid = False + pAttachmentData.ErrorCodeComment = "File Extension not valid" End If Return False @@ -1107,6 +1130,9 @@ Public Class clsWorkEmail Return True End Function + ''' + ''' Diese Funktion wird nicht mehr verwendet!!!! + ''' Private Function EXTRACT_ATTACHMENTS(pCurrentMail As MailContainer, pExtractPath As String, pErrorPath As String) _Logger.Debug("In EXTRACT_ATTACHMENTS...") @@ -1133,7 +1159,7 @@ Public Class clsWorkEmail 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, "") + _InfoTemplateId, ErrorCode.NormalFileAttachmentCorrupt, oATTFilename, "") End If Continue For @@ -1185,7 +1211,7 @@ Public Class clsWorkEmail 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, - _InfoTemplateId, ErrorCode.PDFStructureCorrupt, oATTFilename, "") + _InfoTemplateId, ErrorCode.EmbeddedFileAttachmentCorrupt, oATTFilename, "") File.Delete(oAttachmentFilePath) Continue For Else @@ -1206,7 +1232,7 @@ Public Class clsWorkEmail 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, "") + _InfoTemplateId, ErrorCode.EmbeddedFileAttachmentCorrupt, oEmbAttName, "") End If Continue For End If @@ -1219,7 +1245,7 @@ Public Class clsWorkEmail 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, "") + _InfoTemplateId, ErrorCode.EmbeddedFileAttachmentCorrupt, oEmbAttName, "") Continue For End If End If @@ -1242,7 +1268,7 @@ Public Class clsWorkEmail 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, "") + _InfoTemplateId, ErrorCode.EmbeddedFileAttachmentCorrupt, oAttachment.SafeFileName, "") Try File.Delete(oAttachmentFilePath) Catch ex As Exception