Compare commits

...

2 Commits

14 changed files with 354 additions and 392 deletions

View File

@ -1,9 +1,5 @@
Imports WINDREAMLib
Imports Limilabs.Mail
Imports Limilabs.Mail.MIME
Imports Limilabs.Mail.Headers
Imports MailBox = Limilabs.Mail.Headers.MailBox
Imports Limilabs.Client.IMAP
Imports Limilabs.Client.IMAP
Imports WINDREAMLib
Public Class ClassCurrent
Public Shared Property WM_DRIVE As String

View File

@ -12,6 +12,8 @@ Public Class EmailAttachment
Public ErrorCodeValue As ErrorCode = ErrorCode.Unknown
Public ErrorCodeComment As String = ""
Public AttachmentPosition As Integer = 0
Public EmbeddedFiles As List(Of EmailAttachment) = New List(Of EmailAttachment)
Public ReadOnly Property Extension As String

View File

@ -8,27 +8,32 @@ Public Class MailContainer
''' The Mail object created by Limilabs
''' </summary>
Public ReadOnly Property Mail As IMail
''' <summary>
''' The IMAP Id coming from the IMAP folder. Used to reference the mail.
''' </summary>
Public ReadOnly Property ImapId As Integer
''' <summary>
''' The original MessageID from the eml file
''' </summary>
Public ReadOnly Property MessageIdOriginal As String
''' <summary>
''' The new MessageID, which is generated by hashing the original MessageID
''' </summary>
Public ReadOnly Property MessageId As String
''' <summary>
''' The subject, truncated to SUBJECT_MAX_LENGTH characters
''' </summary>
Public ReadOnly Property Subject As String
Public ReadOnly Property SubjectOriginal As String
Public ReadOnly Property SenderDomain As String
Public ReadOnly Property SenderAddress As String
Public ReadOnly Property SenderAddress As String
Public Sub New(pMail As IMail, pImapId As Integer)
Mail = pMail

View File

@ -122,14 +122,14 @@
<Compile Include="clsEmail.IMAP.vb" />
<Compile Include="Data\ConfigData.vb" />
<Compile Include="Data\EmailAttachment.vb" />
<Compile Include="EmailStrings.vb" />
<Compile Include="Enum\EmailStrings.vb" />
<Compile Include="clsEncryption.vb" />
<Compile Include="clsWindream_allgemein.vb" />
<Compile Include="clsWindream_Index.vb" />
<Compile Include="clsWorkEmail.vb" />
<Compile Include="clsWorker.vb" />
<Compile Include="Enum\ErrorCode.vb" />
<Compile Include="MailContainer.vb" />
<Compile Include="Data\MailContainer.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>

View File

@ -13,7 +13,7 @@ Imports System.Runtime.InteropServices
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("DigitalData.EMLProfiler")>
<Assembly: AssemblyCopyright("Copyright © 2025")>
<Assembly: AssemblyTrademark("3.0.8.0")>
<Assembly: AssemblyTrademark("3.0.9.0")>
<Assembly: ComVisible(False)>
@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("3.0.8.0")>
<Assembly: AssemblyFileVersion("3.0.8.0")>
<Assembly: AssemblyVersion("3.0.9.0")>
<Assembly: AssemblyFileVersion("3.0.9.0")>

View File

@ -18,7 +18,7 @@ Public Class clsWorkEmail
Private Const SUBJECT_MAX_LENGTH = 25
Private Const MESSAGE_ID_MAX_LENGTH = 100
Private CurrentMail As MailContainer = Nothing
Private _CurrentMail As MailContainer = Nothing
Private CurrentTempMailPath As String
@ -48,24 +48,14 @@ Public Class clsWorkEmail
Private ReadOnly _LicenseManager As New LicenseManager
Private ReadOnly _ValidExtensions As List(Of String)
Private ReadOnly _ValidFirstExtensions As List(Of String)
Private ReadOnly _GraphicExtensions As List(Of String)
Private DoubleBytes As Double
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,
' pInfoTemplateId As Integer,
' pConfigData As ConfigData)
Sub New(LogConf As LogConfig,
ConStr As String,
WmConStr As String,
pConfigData As ConfigData)
Sub New(LogConf As LogConfig, ConStr As String, WmConStr As String, pConfigData As ConfigData)
Try
_Logger = LogConf.GetLogger
_LogConfig = LogConf
@ -78,6 +68,8 @@ Public Class clsWorkEmail
_Logger.Debug($"_RejectionTemplateId: {_RejectionTemplateId}")
_ValidExtensions = New List(Of String) From {"pdf", "xls", "xlsx", "doc", "docx", "ppt", "pptx"}
_ValidFirstExtensions = New List(Of String) From {"xml"}
_ValidFirstExtensions.AddRange(_ValidExtensions)
_GraphicExtensions = New List(Of String) From {"jpg", "bmp", "jpeg", "gif", "png", "xml"}
If _UseWindream Then
@ -99,6 +91,7 @@ Public Class clsWorkEmail
_Logger.Error(ex)
End Try
End Sub
Public Function WorkEmailMessage(pMailMessage As IMail, poUID As Long, pValidationSQL As String) As Boolean
Try
For Each m As MailBox In pMailMessage.From
@ -106,7 +99,7 @@ Public Class clsWorkEmail
Next
'TODO: Move all of these CURRENT_MAIL vars into a business object of type mail container
CurrentMail = New MailContainer(pMailMessage, poUID)
_CurrentMail = New MailContainer(pMailMessage, poUID)
_Logger.Debug($"Working on email from: {CURRENT_MAIL_FROM}...Subject: {pMailMessage.Subject}")
CURRENT_MAIL_BODY_ALL = ""
@ -149,7 +142,7 @@ Public Class clsWorkEmail
_Logger.Info($"Working on email from : {CURRENT_MAIL_FROM}...")
Dim oSql = $"Select COALESCE(MAX(GUID),0) FROM TBEMLP_HISTORY WHERE EMAIL_MSGID = '{CurrentMail.MessageId}'"
Dim oSql = $"Select COALESCE(MAX(GUID),0) FROM TBEMLP_HISTORY WHERE EMAIL_MSGID = '{_CurrentMail.MessageId}'"
Dim oHistoryID = _DB_MSSQL.GetScalarValue(oSql)
If oHistoryID > 0 And IS_LOCAL_TEST = False Then
@ -157,13 +150,13 @@ Public Class clsWorkEmail
Return True
End If
Dim oTempMailExists As Boolean = Save2TempDirectory(CurrentMail)
Dim oTempMailExists As Boolean = Save2TempDirectory(_CurrentMail)
'Checking wether Mail can be opened
Dim oTempMailAccessible As Boolean = False
If oTempMailExists = False Then
_Logger.Warn("Could not process email [{0}], file does not exist!", CurrentMail.MessageId)
_Logger.Warn("Could not process email [{0}], file does not exist!", _CurrentMail.MessageId)
Return False
End If
@ -176,7 +169,7 @@ Public Class clsWorkEmail
End Try
If oTempMailAccessible = False Then
_Logger.Warn("Could not process email [{0}], file is not accessible!", CurrentMail.MessageId)
_Logger.Warn("Could not process email [{0}], file is not accessible!", _CurrentMail.MessageId)
Return False
End If
@ -185,21 +178,21 @@ Public Class clsWorkEmail
If pValidationSQL <> "" Then
Dim oReplaceValues = New Dictionary(Of String, String) From {
{"EMAIL", CurrentMail.SenderAddress},
{"DOMAIN", CurrentMail.SenderDomain}
{"EMAIL", _CurrentMail.SenderAddress},
{"DOMAIN", _CurrentMail.SenderDomain}
}
Dim pValidationSQLWithPlaceholders = _Patterns.ReplaceCustomValues(pValidationSQL, oReplaceValues)
Dim oResult As String = ObjectEx.NotNull(_DB_MSSQL.GetScalarValue(pValidationSQLWithPlaceholders), "")
If oResult <> "" Then
Dim oRejectionCodeString = GetRejectionCodeString(CurrentMail.MessageId, ErrorCode.SenderValidationFailed)
Dim oRejectionCodeString = GetRejectionCodeString(_CurrentMail.MessageId, ErrorCode.SenderValidationFailed)
'insert history und exit
InsertHistoryEntryWithStatus(CurrentMail, "REJECTED", oRejectionCodeString)
AddTrackingStatusMSSQL(CurrentMail.MessageId, oRejectionCodeString, "Email-Adress validation failed", "", "EMailProfiler")
InsertHistoryEntryWithStatus(_CurrentMail, "REJECTED", oRejectionCodeString)
AddTrackingStatusMSSQL(_CurrentMail.MessageId, oRejectionCodeString, "Email-Adress validation failed", "", "EMailProfiler")
AddToEmailQueueMSSQL(CurrentMail.MessageId, oResult, "Email validation failed", _EmailAccountID,
AddToEmailQueueMSSQL(_CurrentMail.MessageId, oResult, "Email validation failed", _EmailAccountID,
_RejectionTemplateId, ErrorCode.SenderValidationFailed, "", "")
' Return early from processing eml
@ -209,13 +202,13 @@ Public Class clsWorkEmail
End If
If CURRENT_MAIL_SUBJECT.Contains("[PROCESSMANAGER]") Then
Return PROCESS_MANAGER_IN(CurrentMail)
Return ProcessManager_IN(_CurrentMail)
Else
_Logger.Debug("CommonEmail-Process-Sniffer")
Dim oCommonEmailResult = COMMON_EMAIL_IN(CurrentMail)
Dim oCommonEmailResult = CommonEmail_IN(_CurrentMail)
If oCommonEmailResult = False Then
Return False
@ -224,19 +217,18 @@ Public Class clsWorkEmail
If CURRENT_ATTMT_COUNT = 0 Then
_Logger.Info("### Mail contained no Attachments!! ###")
Dim oRejectionCodeString = GetRejectionCodeString(CurrentMail.MessageId, ErrorCode.NoAttachments)
InsertHistoryEntryWithStatus(CurrentMail, "REJECTED", oRejectionCodeString)
AddTrackingStatusMSSQL(CurrentMail.MessageId, oRejectionCodeString, "No Attachments", "", "EMailProfiler")
Dim oRejectionCodeString = GetRejectionCodeString(_CurrentMail.MessageId, ErrorCode.NoAttachments)
InsertHistoryEntryWithStatus(_CurrentMail, "REJECTED", oRejectionCodeString)
AddTrackingStatusMSSQL(_CurrentMail.MessageId, oRejectionCodeString, "No Attachments", "", "EMailProfiler")
Dim oBody = EmailStrings.EMAIL_NO_FERDS
If AddToEmailQueueMSSQL(CurrentMail.MessageId, oBody, "No Attachments", _EmailAccountID,
If AddToEmailQueueMSSQL(_CurrentMail.MessageId, oBody, "No Attachments", _EmailAccountID,
_RejectionTemplateId, ErrorCode.NoAttachments, "", "") = True Then
CURRENT_ImapObject.DeleteMessageByUID(poUID)
End If
Else
' Jetzt werden die ggf gefundenen Attachment-Fehler überprüft und verarbeitet
Dim oNormalAttachmentsNotValid As Boolean = False
Dim oEmbeddedAttachmentsNotValid As Boolean = False
@ -246,9 +238,9 @@ Public Class clsWorkEmail
Any(Function(emb) emb.EmbeddedFiles.Any(Function(ext) ext.IsAttachmentValid = False))
If oEmbeddedAttachmentsNotValid = True Then
Dim oRejectionCodeString = GetRejectionCodeString(CurrentMail.MessageId, ErrorCode.EmbeddedFileAttachmentCorrupt)
InsertHistoryEntryWithStatus(CurrentMail, "REJECTED", oRejectionCodeString)
AddTrackingStatusMSSQL(CurrentMail.MessageId, oRejectionCodeString, "Embedded File corrupt", "", "EMailProfiler")
Dim oRejectionCodeString = GetRejectionCodeString(_CurrentMail.MessageId, ErrorCode.EmbeddedFileAttachmentCorrupt)
InsertHistoryEntryWithStatus(_CurrentMail, "REJECTED", oRejectionCodeString)
AddTrackingStatusMSSQL(_CurrentMail.MessageId, oRejectionCodeString, "Embedded File corrupt", "", "EMailProfiler")
SendRejectionMailToSenderIfEmbeddedAttachmentsAreNotValid()
@ -257,7 +249,7 @@ Public Class clsWorkEmail
Else
If IS_LOCAL_TEST = False Then
InsertHistoryEntry(CurrentMail)
InsertHistoryEntry(_CurrentMail)
End If
oNormalAttachmentsNotValid = EmailAttachments.Any(Function(ext) ext.IsAttachmentValid = False)
@ -291,7 +283,7 @@ Public Class clsWorkEmail
If oHtmlFilenameList.IsNotNullOrEmpty() Then
AddToEmailQueueMSSQL(CurrentMail.MessageId, "", "Attachment invalid", _EmailAccountID, _InfoTemplateId, ErrorCode.NormalFileAttachmentCorrupt, oHtmlFilenameList, "")
AddToEmailQueueMSSQL(_CurrentMail.MessageId, "", "Attachment invalid", _EmailAccountID, _InfoTemplateId, ErrorCode.NormalFileAttachmentCorrupt, oHtmlFilenameList, "")
End If
End Sub
@ -305,7 +297,7 @@ Public Class clsWorkEmail
Dim oHtmlFilenameList As String = GetHtmlFilenameList()
If oHtmlFilenameList.IsNotNullOrEmpty() Then
AddToEmailQueueMSSQL(CurrentMail.MessageId, "", "Attachment invalid", _EmailAccountID, _RejectionTemplateId, ErrorCode.EmbeddedFileAttachmentCorrupt, oHtmlFilenameList, "")
AddToEmailQueueMSSQL(_CurrentMail.MessageId, "", "Attachment invalid", _EmailAccountID, _RejectionTemplateId, ErrorCode.EmbeddedFileAttachmentCorrupt, oHtmlFilenameList, "")
End If
End Sub
@ -323,7 +315,7 @@ Public Class clsWorkEmail
If attachmentItem.IsAttachmentValid = False Or oEmbeddedAttachmentsInvalid = True Then
AddTrackingStatusMSSQL(CurrentMail.MessageId, attachmentItem.OrgFileName, "FILE CONSISTENCY NOT OK", attachmentItem.ErrorCodeComment, "EMail Profiler")
AddTrackingStatusMSSQL(_CurrentMail.MessageId, attachmentItem.OrgFileName, "FILE CONSISTENCY NOT OK", attachmentItem.ErrorCodeComment, "EMail Profiler")
filenameHtmlString += "<li>" + attachmentItem.OrgFileName + "</li>"
End If
@ -335,7 +327,7 @@ Public Class clsWorkEmail
For Each embeddedItem In attachmentItem.EmbeddedFiles
If embeddedItem.IsAttachmentValid = False Then
AddTrackingStatusMSSQL(CurrentMail.MessageId, embeddedItem.OrgFileName, "EMBEDDED FILE CONSISTENCY NOT OK", embeddedItem.ErrorCodeComment, "EMail Profiler")
AddTrackingStatusMSSQL(_CurrentMail.MessageId, embeddedItem.OrgFileName, "EMBEDDED FILE CONSISTENCY NOT OK", embeddedItem.ErrorCodeComment, "EMail Profiler")
embeddedFilenamesHtmlString += "<li>" + embeddedItem.OrgFileName + "</li>"
End If
@ -542,7 +534,8 @@ Public Class clsWorkEmail
Return True
End Function
Private Function PROCESS_MANAGER_IN(pCurrentMail As MailContainer) As Boolean
Private Function ProcessManager_IN(pCurrentMail As MailContainer) As Boolean
Try
_Logger.Info(String.Format("PM-related message found....[{0}]", pCurrentMail.Mail.Subject))
@ -566,8 +559,8 @@ Public Class clsWorkEmail
WM_IDX_BODY_SUBSTR_LENGTH = row("WM_IDX_BODY_SUBSTR_LENGTH")
DeleteMail = row("DELETE_MAIL")
If COPY2HDD(pCurrentMail, row("COPY_2_HDD"), row("PATH_ORIGINAL"), row("PATH_EMAIL_ERRORS"), False) = True Then
EXTRACT_BODY(pCurrentMail)
If Copy2HDD(pCurrentMail, row("COPY_2_HDD"), row("PATH_ORIGINAL"), row("PATH_EMAIL_ERRORS"), False) = True Then
ExtractBody(pCurrentMail)
End If
@ -583,9 +576,9 @@ Public Class clsWorkEmail
_Logger.Info(String.Format("Keyword contained a : at end...removing it..."))
CURRENT_MAIL_BODY_ANSWER1 = CURRENT_MAIL_BODY_ANSWER1.Replace(":", "")
End If
If GET_WMDOC_INFO() = True Then
If GetWMDocInfo() = True Then
If DT_STEPS.Rows.Count > 0 Then
WORK_POLL_STEPS()
WorkPollSteps()
Else
_Logger.Info("No steps configured for this Profile ....")
End If
@ -601,7 +594,7 @@ Public Class clsWorkEmail
Return False
End Try
End Function
Dim DoubleBytes As Double
Default Public Property FormatBytes(ByVal BytesCaller As ULong) As String
Get
Try
@ -632,7 +625,8 @@ Public Class clsWorkEmail
End Set
End Property
Function COMMON_EMAIL_IN(pCurrentMail As MailContainer) As Boolean
Function CommonEmail_IN(pCurrentMail As MailContainer) As Boolean
Try
_Logger.Info(String.Format("COMMON_EMAIL_IN...Subject [{0}]", pCurrentMail.Mail.Subject))
@ -697,7 +691,7 @@ Public Class clsWorkEmail
_Logger.Warn($"Unexpected Error in Checking RemainingTotalFreeSpace for Storage [{oExtractMainPath}]: {ex.Message}")
End Try
If COPY2HDD(pCurrentMail, oRow("COPY_2_HDD"), oRow("PATH_ORIGINAL"), oRow("PATH_EMAIL_ERRORS"), True) = True Then
If Copy2HDD(pCurrentMail, oRow("COPY_2_HDD"), oRow("PATH_ORIGINAL"), oRow("PATH_EMAIL_ERRORS"), True) = True Then
If ExtractAttachments(pCurrentMail, oExtractMainPath) = True Then
Return True
@ -781,7 +775,8 @@ Public Class clsWorkEmail
End Try
End Function
Private Function COPY2HDD(pCurrentMail As MailContainer, pShouldCopyToDisk As Boolean, pDestination As String, pPathErrors As String, pUseMessageIdAsFilename As Boolean) As Boolean
Private Function Copy2HDD(pCurrentMail As MailContainer, pShouldCopyToDisk As Boolean, pDestination As String, pPathErrors As String, pUseMessageIdAsFilename As Boolean) As Boolean
Try
If pShouldCopyToDisk = True Then
_Logger.Debug("COPY_2_HDD is ACTIVE!")
@ -825,7 +820,8 @@ Public Class clsWorkEmail
Return False
End Try
End Function
Private Function EXTRACT_BODY(pCurrentMail As MailContainer)
Private Function ExtractBody(pCurrentMail As MailContainer)
Dim oTable As DataTable = _DB_MSSQL.GetDatatable("SELECT * FROM TBDD_FUNCTION_REGEX WHERE UPPER(FUNCTION_NAME) IN (UPPER('EMAIL_PROFILER - RemoveHTMLText'),UPPER('EMAIL_PROFILER - RemoveHTMLText1'))")
Dim oBodyText As String = ""
@ -944,14 +940,18 @@ Public Class clsWorkEmail
Return True
End If
Dim oAttachmentCount As Integer = 0
Dim oAttachmentCount As Integer = 0 ' Anzahl gültige Anhänge
Dim AttachmentPosition As Integer = 0 ' Position des Anhangs in der EMail
For Each oAttachment As MimeData In pCurrentMail.Mail.Attachments
_Logger.Info("Working on Attachment [{0}]", oAttachment.SafeFileName)
AttachmentPosition += 1
Dim oEmailAttachment As EmailAttachment = New EmailAttachment() With
{
.OrgFileName = oAttachment.SafeFileName
.OrgFileName = oAttachment.SafeFileName,
.AttachmentPosition = AttachmentPosition
}
EmailAttachments.Add(oEmailAttachment)
@ -1137,9 +1137,15 @@ Public Class clsWorkEmail
_Logger.Debug("Validate extension of [{0}]", pAttachmentData.OrgFileName)
Dim lowerFilename = pAttachmentData.OrgFileName.ToLower
Dim oIsValidExtension = _ValidExtensions.Any(Function(ext) lowerFilename.EndsWith(ext))
Dim oIsValidExtension As Boolean = False
Dim oIsGraphicExtension = _GraphicExtensions.Any(Function(ext) lowerFilename.EndsWith(ext))
If pAttachmentData.AttachmentPosition = 1 Then
oIsValidExtension = _ValidFirstExtensions.Any(Function(ext) lowerFilename.EndsWith(ext))
Else
oIsValidExtension = _ValidExtensions.Any(Function(ext) lowerFilename.EndsWith(ext))
End If
If oIsValidExtension = False Then
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!")
@ -1153,187 +1159,6 @@ Public Class clsWorkEmail
Return True
End Function
' MP - 15.11.2024 - Logik obsolet
'Private Function EXTRACT_ATTACHMENTS(pCurrentMail As MailContainer, pExtractPath As String, pErrorPath As String)
' _Logger.Debug("In EXTRACT_ATTACHMENTS...")
' _Logger.Debug(String.Format("PATH_TEMP[{0}]", pExtractPath))
' Dim oAttachmentCount As Integer
' oAttachmentCount = 0
' TEMP_WORK_FILES.Clear()
' Try
' If CurrentTempMailPath <> Nothing Then
' If File.Exists(CurrentTempMailPath) Then
' Dim oATTFilename = ""
' For Each oAttachment As MimeData In pCurrentMail.Mail.Attachments
' 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", "jpeg", "gif", "png", "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.NormalFileAttachmentCorrupt, oATTFilename, "")
' End If
' Continue For
' End If
' Dim oAttachmentFilePath = ""
' _Logger.Info("Working on Attachment [{0}]", oAttachment.SafeFileName)
' Try
' Dim oFileInfo = New FileInfo(oAttachment.SafeFileName)
' Dim oFilenameWithoutExtension = Path.GetFileNameWithoutExtension(oAttachment.SafeFileName)
' Dim oFilename = StringEx.ConvertTextToSlug(oFilenameWithoutExtension) & oFileInfo.Extension
' 'Dim oAttachmentFileName = $"{CURRENT_MAIL_MESSAGE_ID}~{pCurrentMail.SenderDomain}~{oFilename}"
' Dim oAttachmentFileName = $"{pCurrentMail.MessageId}~Attm{oAttachmentCount}{oFileInfo.Extension}"
' _Logger.Debug("Final Filename for Attachment: [{0}]", oAttachmentFileName)
' Dim oExtractTempPath = Path.Combine(pExtractPath, "Temp")
' If Directory.Exists(oExtractTempPath) = False Then
' Directory.CreateDirectory(oExtractTempPath)
' End If
' oAttachmentFilePath = Path.Combine(oExtractTempPath, oAttachmentFileName)
' _Logger.Debug("Final Path for Attachment: [{0}]", oAttachmentFilePath)
' If File.Exists(oAttachmentFilePath) Then
' _Logger.Warn("File [{0}] already exists!", oAttachmentFilePath)
' File.Delete(oAttachmentFilePath)
' End If
' _Logger.Debug(String.Format("Trying to save attachment [{0}]", oAttachmentFilePath))
' Try
' oAttachment.Save(oAttachmentFilePath)
' 'oAttachment.Save(oAttachmentFileString)
' Dim oFileInfo1 As New FileInfo(oAttachmentFilePath)
' 'ToDo Konsistenz prüfen
' If oFileInfo.Extension.ToLower = ".pdf" Then
' Dim oPDFConsistent As Boolean = True
' Dim oLicenseManager As New LicenseManager
' oLicenseManager.RegisterKEY(GDPictureLicense)
' Dim oGdPicturePDF As New GdPicturePDF()
' ' Lic
' Dim oStatus As GdPictureStatus = oGdPicturePDF.LoadFromFile(oAttachmentFilePath, True)
' If oStatus <> GdPictureStatus.OK Then
' oPDFConsistent = False
' 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.EmbeddedFileAttachmentCorrupt, oATTFilename, "")
' File.Delete(oAttachmentFilePath)
' Continue For
' Else
' Dim embeddedFileCount As Integer = oGdPicturePDF.GetEmbeddedFileCount()
' If embeddedFileCount > 0 Then
' For i As Integer = 0 To embeddedFileCount - 1
' Dim oEmbAttName As String = oGdPicturePDF.GetEmbeddedFileName(i)
' Dim fileDetail As IO.FileInfo
' fileDetail = My.Computer.FileSystem.GetFileInfo(oEmbAttName)
' If oGdPicturePDF.GetStat() = GdPictureStatus.OK Then
' Dim FileSize As Integer = oGdPicturePDF.GetEmbeddedFileSize(i)
' oValidExt = oValidExtensions.Any(Function(ext) oEmbAttName.EndsWith(ext))
' If oValidExt = False Then
' _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.EmbeddedFileAttachmentCorrupt, oEmbAttName, "")
' End If
' Continue For
' End If
' If oGdPicturePDF.GetStat() = GdPictureStatus.OK Then
' Dim FileData As Byte() = New Byte(FileSize) {}
' Dim status As GdPictureStatus = oGdPicturePDF.ExtractEmbeddedFile(0, FileData)
' If status <> GdPictureStatus.OK Or FileSize = 0 Then
' oPDFConsistent = False
' 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.EmbeddedFileAttachmentCorrupt, oEmbAttName, "")
' Continue For
' End If
' End If
' End If
' Next
' End If
' End If
' End If
' 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($"##!! 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.EmbeddedFileAttachmentCorrupt, oAttachment.SafeFileName, "")
' Try
' File.Delete(oAttachmentFilePath)
' Catch ex As Exception
' _Logger.Error(ex)
' End Try
' End If
' Catch ex As Exception
' _Logger.Warn($"Error while saving attachment-name: {ex.Message} - AttachmentName: {oAttachmentFilePath}")
' MESSAGE_ERROR = True
' End Try
' Catch ex As Exception
' _Logger.Warn($"Error while creating and saving attachment-name: {ex.Message} - AttachmentName: {oAttachmentFilePath}")
' MESSAGE_ERROR = True
' End Try
' TEMP_WORK_FILES.Add(oAttachmentFilePath)
' Next
' Else
' _Logger.Warn($"If cause 2 EXTRACT_ATTACHMENTS: {CurrentTempMailPath} not existing")
' End If
' Else
' _Logger.Warn($"EXTRACT_ATTACHMENTSIf cause 1: CURRENT_TEMP_MAIL_PATH is NOTHING")
' End If
' CURRENT_ATTMT_COUNT = oAttachmentCount
' If MESSAGE_ERROR = True Then
' WorkTempFiles("delete")
' Return False
' Else
' WorkTempFiles("move")
' Return True
' End If
' Catch ex As Exception
' _Logger.Error(ex)
' MESSAGE_ERROR = True
' Return False
' End Try
'End Function
Private Sub WorkTempFiles(pAction As String)
For Each _file In TEMP_WORK_FILES
_Logger.Debug("Working ({0}) on temp work file: [{1}]", pAction, _file)
@ -1505,7 +1330,7 @@ Public Class clsWorkEmail
End Function
Private Function WORK_POLL_STEPS() As Boolean
Private Function WorkPollSteps() As Boolean
Try
Dim oFoundSomething As Boolean = False
_worked_email = False
@ -1523,7 +1348,7 @@ Public Class clsWorkEmail
Dim sql As String = String.Format("SELECT * FROM TBEMLP_POLL_INDEXING_STEPS WHERE STEP_ID = {0} AND ACTIVE = 1", POLL_STEP_GUID)
DT_INDEXING_STEPS = _DB_MSSQL.GetDatatable(sql)
If DT_INDEXING_STEPS.Rows.Count > 0 Then
WORK_INDEXING_STEPS()
WorkIndexingSteps()
Else
_Logger.Info("No Indexing Steps found?! - SQL: " & sql)
End If
@ -1541,7 +1366,7 @@ Public Class clsWorkEmail
If DT_INDEXING_STEPS.Rows.Count >= 1 Then
_Logger.Info($"An index for direct answer was configured. Therefore it will be used...")
End If
WORK_INDEXING_STEPS()
WorkIndexingSteps()
_worked_email = True
End If
@ -1563,7 +1388,8 @@ Public Class clsWorkEmail
Return False
End Try
End Function
Private Function WORK_INDEXING_STEPS() As Boolean
Private Function WorkIndexingSteps() As Boolean
Try
For Each row As DataRow In DT_INDEXING_STEPS.Rows
@ -1583,6 +1409,7 @@ Public Class clsWorkEmail
Return False
End Try
End Function
Private Function IndexFile(oidxname As String, oidxvalue As String, oConcat_act_Value As Boolean)
Dim OArrIndex() As String
@ -1633,9 +1460,9 @@ Public Class clsWorkEmail
End If
End Function
Private Function GET_WMDOC_INFO() As Boolean
Private Function GetWMDocInfo() As Boolean
Try
Dim oDOC_ID = REGEX_CHECK_DOC_ID(CURRENT_MAIL_SUBJECT.Replace("10636", "133092").Replace("10644", "133092"))
Dim oDOC_ID = RegExCheckDocID(CURRENT_MAIL_SUBJECT.Replace("10636", "133092").Replace("10644", "133092"))
If Not IsNothing(oDOC_ID) Then
Dim oDT_BASE_ATTR As DataTable = _DB_MSSQL.GetDatatableWithConnection("SELECT * FROM BaseAttributes WHERE dwDocID = " & oDOC_ID, _windreamConnectionString)
If Not IsNothing(oDT_BASE_ATTR) Then
@ -1680,7 +1507,8 @@ Public Class clsWorkEmail
Return False
End Try
End Function
Public Function REGEX_CHECK_DOC_ID(SearchString As String)
Public Function RegExCheckDocID(SearchString As String)
Try
Dim oRegex As New Regex("\[DID#{1}([0-9]+)]{1}")
_Logger.Debug("REGEX_String before replacing: '" & SearchString & "'")

View File

@ -1,4 +1,5 @@
Imports DigitalData.Modules.Base
Imports System.IO
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Messaging.Mail
@ -7,13 +8,13 @@ Imports Limilabs.Mail
Imports Limilabs.Mail.Headers
Public Class clsWorker
Private ReadOnly Logger As Logger
Private ReadOnly Fetcher As MailFetcher
Private ReadOnly Database As MSSQLServer
Private ReadOnly _Logger As Logger
Private ReadOnly _Fetcher As MailFetcher
Private ReadOnly _Database As MSSQLServer
Private ReadOnly _UseWindream As Boolean = False
Private ReadOnly ClassWindreamAllgemein As clsWindream_allgemein
Private ReadOnly ClassWindreamIndex As clsWindream_Index
Private ReadOnly ClassWorkMail As clsWorkEmail
Private ReadOnly _ClassWorkMail As clsWorkEmail
Private ReadOnly Encryption As clsEncryption
Private ReadOnly _ProfileId As Integer = 0D
Private ReadOnly EmailLimitationSender As String = ""
@ -24,15 +25,15 @@ Public Class clsWorker
Private ReadOnly LocalEmlFile As String = ""
Sub New(pLogConfig As LogConfig, pConnectionString As String, pWindreamConnectionString As String, pPollProfileId As Integer, pConfigData As ConfigData, Optional pLocalEML As String = "")
Logger = pLogConfig.GetLogger
_Logger = pLogConfig.GetLogger
'ClassEmailImap = New clsEmailIMAP(pLogConfig)
Fetcher = New MailFetcher(pLogConfig)
Database = New MSSQLServer(pLogConfig, pConnectionString)
_Fetcher = New MailFetcher(pLogConfig)
_Database = New MSSQLServer(pLogConfig, pConnectionString)
_UseWindream = pConfigData.UseWindream
EmailLimitationSender = pConfigData.EmailSenderLimitation
If EmailLimitationSender.Contains("@") Then
Logger.Info("Email Sender Limitation active for address: [{0}]", EmailLimitationSender)
_Logger.Info("Email Sender Limitation active for address: [{0}]", EmailLimitationSender)
EmailLimitationEnabled = True
End If
@ -41,7 +42,7 @@ Public Class clsWorker
ClassWindreamIndex = New clsWindream_Index(pLogConfig)
End If
ClassWorkMail = New clsWorkEmail(pLogConfig, pConnectionString, pWindreamConnectionString, pConfigData)
_ClassWorkMail = New clsWorkEmail(pLogConfig, pConnectionString, pWindreamConnectionString, pConfigData)
Encryption = New clsEncryption("!35452didalog=", pLogConfig)
_ProfileId = pPollProfileId
@ -50,14 +51,14 @@ Public Class clsWorker
Private Sub DeleteTempFiles()
For Each _file In TEMP_FILES
Logger.Debug("Trying to delete temp file: [{0}]", _file)
_Logger.Debug("Trying to delete temp file: [{0}]", _file)
If IO.File.Exists(_file) Then
If File.Exists(_file) Then
Try
IO.File.Delete(_file)
File.Delete(_file)
Catch ex As Exception
Logger.Error(ex)
Logger.Warn("Could not delete the tempfile from TEMP_FILES: [{0}]", _file)
_Logger.Error(ex)
_Logger.Warn("Could not delete the tempfile from TEMP_FILES: [{0}]", _file)
End Try
End If
Next
@ -65,7 +66,7 @@ Public Class clsWorker
End Sub
Private Function LoadEmailAccounts() As DataTable
Return Database.GetDatatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1")
Return _Database.GetDatatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1")
End Function
Private Function LoadPollingProfiles(pProfileId As Integer) As DataTable
@ -77,49 +78,42 @@ Public Class clsWorker
oSQL &= $" AND GUID = {pProfileId}"
End If
Return Database.GetDatatable(oSQL)
Return _Database.GetDatatable(oSQL)
End Function
Public Sub Start_WorkingProfiles(Optional LocalEmail As Boolean = False, Optional CallFromService As Boolean = False)
Public Sub Start_WorkingProfiles(Optional LocalEmail As Boolean = False)
Try
DeleteTempFiles()
IS_LOCAL_TEST = LocalEmail
If Database.DBInitialized = False Then
Logger.Warn("Database is not initialized. Exiting.")
If _Database.DBInitialized = False Then
_Logger.Warn("Database is not initialized. Exiting.")
Exit Sub
End If
Logger.Debug("now windream_init... ")
_Logger.Debug("now windream_init... ")
If _UseWindream Then
If ClassWindreamAllgemein.Init = False Then
Logger.Info("windream could not be initialized!!")
_Logger.Info("windream could not be initialized!!")
Exit Sub
Else
Logger.Debug("windream_initialized!")
_Logger.Debug("windream_initialized!")
End If
End If
Dim EmailAccountTable As DataTable = LoadEmailAccounts()
Dim PollingProfileTable = LoadPollingProfiles(_ProfileId)
'Dim oSQLGDPicture = "SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE ACTIVE = 1"
'If CallFromService = True Then
' oSQLGDPicture = "SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE NAME = 'GDPICTURE EMAIL_PROFILER'"
'End If
'GDPictureLicense = Database.GetScalarValue(oSQLGDPicture)
If IsNothing(PollingProfileTable) Then
Logger.Warn("Error while fetching Polling Profiles. Exiting.")
_Logger.Warn("Error while fetching Polling Profiles. Exiting.")
Exit Sub
End If
If PollingProfileTable.Rows.Count = 0 Then
Logger.Warn("No active Polling Profiles found. Exiting.")
_Logger.Warn("No active Polling Profiles found. Exiting.")
Exit Sub
End If
Logger.Debug("Count of active profiles: " & PollingProfileTable.Rows.Count.ToString)
_Logger.Debug("Count of active profiles: " & PollingProfileTable.Rows.Count.ToString)
For Each oProfile As DataRow In PollingProfileTable.Rows
@ -128,31 +122,31 @@ Public Class clsWorker
CURRENT_PROFILE_GUID = oProfile.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.GetDatatable(sql)
DT_POLL_PROCESS = _Database.GetDatatable(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)
_Logger.Info("No processes configured for this Email-Profile - " & sql)
Continue For
Else
DT_STEPS = Nothing
DT_STEPS = Database.GetDatatable($"SELECT T.* FROM TBEMLP_POLL_STEPS T,TBEMLP_POLL_PROCESS T1 WHERE T.PROCESS_ID = T1.GUID AND T1.PROFILE_ID = {CURRENT_PROFILE_GUID} AND T1.ACTIVE = 1")
DT_STEPS = _Database.GetDatatable($"SELECT T.* FROM TBEMLP_POLL_STEPS T,TBEMLP_POLL_PROCESS T1 WHERE T.PROCESS_ID = T1.GUID AND T1.PROFILE_ID = {CURRENT_PROFILE_GUID} AND T1.ACTIVE = 1")
End If
Else
Logger.Warn("DT_POLL_PROCESS is nothing")
_Logger.Warn("DT_POLL_PROCESS is nothing")
Continue For
End If
CURRENT_EMAIL_GUID = 0
CURRENT_POLL_TYPE = oProfile.Item("POLL_TYPE")
Logger.Debug(String.Format("Working on profile: ({0}-{1}-{2}) ", oProfile.Item("GUID"), oProfile.Item("PROFILE_NAME"), CURRENT_POLL_TYPE))
_Logger.Debug(String.Format("Working on profile: ({0}-{1}-{2}) ", oProfile.Item("GUID"), oProfile.Item("PROFILE_NAME"), CURRENT_POLL_TYPE))
CURRENT_EMAIL_GUID = oProfile.Item("EMAIL_CONF_ID")
Dim FilteredRows As List(Of DataRow) = EmailAccountTable.
Select($"GUID = {CURRENT_EMAIL_GUID}").
ToList()
Logger.Debug("FilteredRows: " & FilteredRows.Count)
_Logger.Debug("FilteredRows: " & FilteredRows.Count)
If FilteredRows.Count = 1 Then
Dim oRow = FilteredRows(0)
@ -165,18 +159,18 @@ Public Class clsWorker
Dim oMailArchiveFolder = oRow("ARCHIVE_FOLDER")
Dim oMailAuthType = oRow("AUTH_TYPE")
Logger.Debug("Mail Server: {0}", oMailServer)
Logger.Debug("Mail From: {0}", oMailFrom)
_Logger.Debug("Mail Server: {0}", oMailServer)
_Logger.Debug("Mail From: {0}", oMailFrom)
Dim PWPlain = Encryption.DecryptData(oMailPassword)
If Not IsNothing(PWPlain) Then
If PWPlain <> "" Then
oMailPassword = PWPlain
Else
Logger.Warn("PWPlain is string.empty - Could not decrypt passwort")
_Logger.Warn("PWPlain is string.empty - Could not decrypt passwort")
End If
Else
Logger.Warn("PWPlain is nothing - Could not decrypt passwort")
_Logger.Warn("PWPlain is nothing - Could not decrypt passwort")
End If
CURRENT_WORKMAIL_UID_LIST.Clear()
@ -192,26 +186,24 @@ Public Class clsWorker
oPollResult = FetchMessages(oMailServer, oMailPortIn, oMailUser, oMailPassword, oMailAuthType, oMailArchiveFolder)
Case Else
Logger.Error("Poll Type [{0}] is not supported!", CURRENT_POLL_TYPE)
_Logger.Error("Poll Type [{0}] is not supported!", CURRENT_POLL_TYPE)
oPollResult = False
End Select
End If
If CURRENT_WORKMAIL_UID_LIST.Count() > 0 Or LocalEmail = True Then
If LocalEmail Then
Logger.Info("Working with local Mail")
_Logger.Info("Working with local Mail")
Dim oEmail As IMail = New MailBuilder().CreateFromEmlFile(LocalEmlFile)
Dim oUID = String.Concat(Now.Month.ToString, Now.Day, Now.Hour, Now.Minute, Now.Second)
ClassWorkMail.WorkEmailMessage(oEmail, oUID, oValidationSql)
'CURRENT_MAIL_MESSAGE = Nothing
_ClassWorkMail.WorkEmailMessage(oEmail, oUID, oValidationSql)
Else
Try
Logger.Info(String.Format("Pulled: [{0}] E-Mails", CURRENT_WORKMAIL_UID_LIST.Count()))
_Logger.Info(String.Format("Pulled: [{0}] E-Mails", CURRENT_WORKMAIL_UID_LIST.Count()))
For Each oMailId In CURRENT_WORKMAIL_UID_LIST
Dim oEmail As IMail = Fetcher.FetchMail(oMailId)
Dim oEmail As IMail = _Fetcher.FetchMail(oMailId)
If Not IsNothing(oEmail) Then
If EmailLimitationEnabled Then
@ -220,52 +212,51 @@ Public Class clsWorker
oEmailFrom = m.Address
Next
If oEmailFrom <> EmailLimitationSender Then
Logger.Debug($"Skipping email {oEmailFrom} ...Subject [{oEmail.Subject}]")
_Logger.Debug($"Skipping email {oEmailFrom} ...Subject [{oEmail.Subject}]")
Continue For
End If
End If
If ClassWorkMail.WorkEmailMessage(oEmail, oMailId, oValidationSql) = True Then
' Hier wird die einzelne EMail jetzt verarbeitet
If _ClassWorkMail.WorkEmailMessage(oEmail, oMailId, oValidationSql) = True Then
If LocalEmlFile = "" Then
DeleteOrMoveEmailFile(oMailId)
End If
End If
Else
Logger.Info("### oEmail was nothing ###")
_Logger.Info("### oEmail was nothing ###")
End If
'CURRENT_MAIL_MESSAGE = Nothing
Next
If CURRENT_POLL_TYPE = "IMAP" And CURRENT_WORKMAIL_UID_LIST.Count > 0 Then
Fetcher.Disconnect()
_Fetcher.Disconnect()
End If
Catch ex As Exception
Logger.Error(ex)
Logger.Warn($"Unexpected Error working CURRENT_WORKMAIL_UID_LIST: {ex.Message} ")
_Logger.Error(ex)
_Logger.Warn($"Unexpected Error working CURRENT_WORKMAIL_UID_LIST: {ex.Message} ")
End Try
End If
Else
Logger.Debug(String.Format("No emails for profile!"))
_Logger.Debug(String.Format("No emails for profile!"))
End If
Else
Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found!")
_Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found!")
End If
Database.ExecuteNonQuery("UPDATE TBEMLP_POLL_PROFILES SET LAST_TICK = GETDATE() WHERE GUID = " & oProfile.Item("GUID").ToString)
_Database.ExecuteNonQuery("UPDATE TBEMLP_POLL_PROFILES SET LAST_TICK = GETDATE() WHERE GUID = " & oProfile.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!")
_Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found! Check wether Email-Profile is active!")
End If
Next
DeleteTempFiles()
Database.ExecuteNonQuery("UPDATE TBEMLP_CONFIG SET LAST_TICK = GETDATE() WHERE GUID = 1")
_Database.ExecuteNonQuery("UPDATE TBEMLP_CONFIG SET LAST_TICK = GETDATE() WHERE GUID = 1")
Catch ex As Exception
Logger.Error(ex)
_Logger.Error(ex)
End Try
End Sub
@ -277,9 +268,9 @@ Public Class clsWorker
Dim oClientId As String = pServer
Dim oClientSecret As String = pPassword
Dim oTenantId As String = pArchiveFolder
oSession = Fetcher.ConnectToO365(pUsername, oClientId, oTenantId, oClientSecret)
oSession = _Fetcher.ConnectToO365(pUsername, oClientId, oTenantId, oClientSecret)
Else
oSession = Fetcher.Connect(pServer, pPort, pUsername, pPassword, pAuthType, New MailSession.MailSessionOptions() With {
oSession = _Fetcher.Connect(pServer, pPort, pUsername, pPassword, pAuthType, New MailSession.MailSessionOptions() With {
.EnableTls1_1 = True,
.EnableTls1_2 = True
})
@ -287,25 +278,25 @@ Public Class clsWorker
If oSession.Connected = False AndAlso oSession.Error IsNot Nothing Then
Logger.Warn("Connection to Mail Server failed!")
Logger.Error(oSession.Error)
_Logger.Warn("Connection to Mail Server failed!")
_Logger.Error(oSession.Error)
Return False
ElseIf oSession.Connected = False Then
Logger.Warn("Connection to Mail Server failed!")
_Logger.Warn("Connection to Mail Server failed!")
Return False
End If
CURRENT_ImapObject = Fetcher.Client
Dim oMailIds As List(Of Long) = Fetcher.ListAllMails()
CURRENT_ImapObject = _Fetcher.Client
Dim oMailIds As List(Of Long) = _Fetcher.ListAllMails()
If oMailIds Is Nothing Then
Logger.Warn("List of UIDs was Nothing. Exiting.")
_Logger.Warn("List of UIDs was Nothing. Exiting.")
Return False
End If
If oMailIds.Count = 0 Then
Logger.Debug("No Emails found.")
_Logger.Debug("No Emails found.")
Return True
End If
@ -314,7 +305,7 @@ Public Class clsWorker
Return True
Catch ex As Exception
Logger.Error(ex)
_Logger.Error(ex)
Return False
End Try
@ -322,41 +313,41 @@ Public Class clsWorker
Private Sub DeleteOrMoveEmailFile(pMailId As Integer)
Try
If MESSAGE_ERROR = True Then
Logger.Warn("Did not delete or move Message with UID [{0}] as there was an MessageError!", pMailId)
_Logger.Warn("Did not delete or move Message with UID [{0}] as there was an MessageError!", pMailId)
Return
End If
If IsNothing(Fetcher.Client) Then
Logger.Warn("Did not delete or move Message with UID [{0}] as ImapClient is null", pMailId)
If IsNothing(_Fetcher.Client) Then
_Logger.Warn("Did not delete or move Message with UID [{0}] as ImapClient is null", pMailId)
Return
End If
If DeleteMail = True Then
Fetcher.Client.DeleteMessageByUID(pMailId)
Logger.Info("Email with Id [{0}] was deleted.", pMailId)
_Fetcher.Client.DeleteMessageByUID(pMailId)
_Logger.Info("Email with Id [{0}] was deleted.", pMailId)
Else
If TestImapFolderExists(SUCCESS_IMAP_FOLDER) Then
If Fetcher.Client.MoveByUID(pMailId, SUCCESS_IMAP_FOLDER) IsNot Nothing Then
Logger.Info("Email with UID [{0}] was moved", pMailId)
If _Fetcher.Client.MoveByUID(pMailId, SUCCESS_IMAP_FOLDER) IsNot Nothing Then
_Logger.Info("Email with UID [{0}] was moved", pMailId)
End If
Else
Logger.Warn("IMAP Folder [{0}] does not exist. Emails could not be moved!", SUCCESS_IMAP_FOLDER)
_Logger.Warn("IMAP Folder [{0}] does not exist. Emails could not be moved!", SUCCESS_IMAP_FOLDER)
End If
End If
Catch ex As Exception
Logger.Error(ex)
_Logger.Error(ex)
End Try
End Sub
Private Function TestImapFolderExists(pFolderName As String) As Boolean
Try
Return Fetcher.Client.
Return _Fetcher.Client.
GetFolders().
Where(Function(f) f.Name = pFolderName).
Any()
Catch ex As Exception
Logger.Warn("Could not get IMAP folders. Returning False.")
Logger.Error(ex)
_Logger.Warn("Could not get IMAP folders. Returning False.")
_Logger.Error(ex)
Return False
End Try
End Function

View File

@ -13,7 +13,7 @@ Public Class MyService
Private LogConfig As LogConfig
Private Logger As Logger
Private EmailWorker As clsWorkEmail
'Private EmailWorker As clsWorkEmail
Private _DBConfig As ClassDBConfig.Config
@ -55,8 +55,9 @@ Public Class MyService
Logger.Warn("Error while initializing DBConfig")
End If
EmailWorker = New clsWorkEmail(LogConfig, _ConfigData.ConnectionString, _DBConfig.WindreamConnectionString, _ConfigData)
Logger.Debug("Module Workmail initialized")
' MP 10.01.25 - Das Objekt wird hier gar nicht weiter verwendet. erstmal raus damit
'EmailWorker = New clsWorkEmail(LogConfig, _ConfigData.ConnectionString, _DBConfig.WindreamConnectionString, _ConfigData)
'Logger.Debug("Module Workmail initialized")
If Database.DBInitialized = False Then
Logger.Warn("No Connection was established! Exiting.")
@ -100,7 +101,7 @@ Public Class MyService
_DBConfig.WindreamConnectionString,
oProfileIdForPolling,
_ConfigData)
oWorker.Start_WorkingProfiles(False, True)
oWorker.Start_WorkingProfiles(False)
Catch ex As Exception
Logger.Error(ex)
End Try

View File

@ -1,6 +1,6 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
Inherits System.Windows.Forms.Form
Inherits DevExpress.XtraBars.Ribbon.RibbonForm
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
@ -22,34 +22,41 @@ Partial Class Form1
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
Me.bsifolderbrowser = New DevExpress.XtraBars.BarStaticItem()
Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
Me.btRunEmailCheck = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonItem3 = New DevExpress.XtraBars.BarButtonItem()
Me.bsitemppath = New DevExpress.XtraBars.BarStaticItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.BarButtonItem4 = New DevExpress.XtraBars.BarButtonItem()
Me.btExtractMailAttachments = New DevExpress.XtraBars.BarButtonItem()
Me.rpPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup4 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
Me.FolderBrowserDialog1 = New System.Windows.Forms.FolderBrowserDialog()
Me.ListBox1 = New System.Windows.Forms.ListBox()
Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.BarButtonItem4 = New DevExpress.XtraBars.BarButtonItem()
Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog()
Me.OpenFileDialog2 = New System.Windows.Forms.OpenFileDialog()
Me.OpenFileDialog3 = New System.Windows.Forms.OpenFileDialog()
Me.BehaviorManager1 = New DevExpress.Utils.Behaviors.BehaviorManager(Me.components)
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.BehaviorManager1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'RibbonControl1
'
Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarButtonItem1, Me.bsifolderbrowser, Me.BarButtonItem2, Me.BarButtonItem3, Me.bsitemppath, Me.BarButtonItem4})
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarButtonItem1, Me.bsifolderbrowser, Me.btRunEmailCheck, Me.BarButtonItem3, Me.bsitemppath, Me.BarButtonItem4, Me.btExtractMailAttachments})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl1.MaxItemId = 7
Me.RibbonControl1.MaxItemId = 8
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl1.Size = New System.Drawing.Size(800, 150)
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.rpPage1})
Me.RibbonControl1.Size = New System.Drawing.Size(800, 158)
Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1
'
'BarButtonItem1
@ -67,12 +74,12 @@ Partial Class Form1
Me.bsifolderbrowser.Name = "bsifolderbrowser"
Me.bsifolderbrowser.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
'
'BarButtonItem2
'btRunEmailCheck
'
Me.BarButtonItem2.Caption = "Run Email_Check"
Me.BarButtonItem2.Id = 3
Me.BarButtonItem2.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItem2.Name = "BarButtonItem2"
Me.btRunEmailCheck.Caption = "Run Email_Check"
Me.btRunEmailCheck.Id = 3
Me.btRunEmailCheck.ImageOptions.SvgImage = CType(resources.GetObject("btRunEmailCheck.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.btRunEmailCheck.Name = "btRunEmailCheck"
'
'BarButtonItem3
'
@ -89,11 +96,25 @@ Partial Class Form1
Me.bsitemppath.Name = "bsitemppath"
Me.bsitemppath.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
'
'RibbonPage1
'BarButtonItem4
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2, Me.RibbonPageGroup3})
Me.RibbonPage1.Name = "RibbonPage1"
Me.RibbonPage1.Text = "RibbonPage1"
Me.BarButtonItem4.Caption = "Extract PDF-Attachments"
Me.BarButtonItem4.Id = 6
Me.BarButtonItem4.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem4.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItem4.Name = "BarButtonItem4"
'
'btExtractMailAttachments
'
Me.btExtractMailAttachments.Caption = "Extract Mail-Attachments"
Me.btExtractMailAttachments.Id = 7
Me.btExtractMailAttachments.ImageOptions.SvgImage = CType(resources.GetObject("btExtractMailAttachments.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.btExtractMailAttachments.Name = "btExtractMailAttachments"
'
'rpPage1
'
Me.rpPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2, Me.RibbonPageGroup3, Me.RibbonPageGroup4})
Me.rpPage1.Name = "rpPage1"
Me.rpPage1.Text = "Funktionen"
'
'RibbonPageGroup1
'
@ -104,46 +125,55 @@ Partial Class Form1
'
'RibbonPageGroup2
'
Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem2)
Me.RibbonPageGroup2.ItemLinks.Add(Me.btRunEmailCheck)
Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
Me.RibbonPageGroup2.Text = "Run"
'
'RibbonStatusBar1
'
Me.RibbonStatusBar1.ItemLinks.Add(Me.bsifolderbrowser)
Me.RibbonStatusBar1.ItemLinks.Add(Me.bsitemppath)
Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 423)
Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
Me.RibbonStatusBar1.Size = New System.Drawing.Size(800, 27)
'
'ListBox1
'
Me.ListBox1.Dock = System.Windows.Forms.DockStyle.Fill
Me.ListBox1.FormattingEnabled = True
Me.ListBox1.Location = New System.Drawing.Point(0, 150)
Me.ListBox1.Name = "ListBox1"
Me.ListBox1.Size = New System.Drawing.Size(800, 273)
Me.ListBox1.TabIndex = 2
'
'RibbonPageGroup3
'
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem4)
Me.RibbonPageGroup3.Name = "RibbonPageGroup3"
Me.RibbonPageGroup3.Text = "PDF Handling"
'
'BarButtonItem4
'RibbonPageGroup4
'
Me.BarButtonItem4.Caption = "Extract PDF-Attachments"
Me.BarButtonItem4.Id = 6
Me.BarButtonItem4.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem4.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItem4.Name = "BarButtonItem4"
Me.RibbonPageGroup4.ItemLinks.Add(Me.btExtractMailAttachments)
Me.RibbonPageGroup4.Name = "RibbonPageGroup4"
Me.RibbonPageGroup4.Text = "EML Handling"
'
'RibbonStatusBar1
'
Me.RibbonStatusBar1.ItemLinks.Add(Me.bsifolderbrowser)
Me.RibbonStatusBar1.ItemLinks.Add(Me.bsitemppath)
Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 426)
Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
Me.RibbonStatusBar1.Size = New System.Drawing.Size(800, 24)
'
'ListBox1
'
Me.ListBox1.Dock = System.Windows.Forms.DockStyle.Fill
Me.ListBox1.FormattingEnabled = True
Me.ListBox1.Location = New System.Drawing.Point(0, 158)
Me.ListBox1.Name = "ListBox1"
Me.ListBox1.Size = New System.Drawing.Size(800, 268)
Me.ListBox1.TabIndex = 2
'
'OpenFileDialog1
'
Me.OpenFileDialog1.Filter = "PDF Files|*.pdf"
Me.OpenFileDialog1.InitialDirectory = "e:\"
'
'OpenFileDialog2
'
Me.OpenFileDialog2.Filter = "EML Files|*.eml"
Me.OpenFileDialog2.InitialDirectory = "e:\temp"
Me.OpenFileDialog2.Title = "Wähle EML-Datei"
'
'OpenFileDialog3
'
Me.OpenFileDialog3.FileName = "OpenFileDialog3"
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@ -153,21 +183,24 @@ Partial Class Form1
Me.Controls.Add(Me.RibbonStatusBar1)
Me.Controls.Add(Me.RibbonControl1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.Ribbon = Me.RibbonControl1
Me.StatusBar = Me.RibbonStatusBar1
Me.Text = "EMail Profiler - Test Tool"
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.BehaviorManager1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents RibbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl
Friend WithEvents RibbonPage1 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents rpPage1 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonStatusBar1 As DevExpress.XtraBars.Ribbon.RibbonStatusBar
Friend WithEvents FolderBrowserDialog1 As FolderBrowserDialog
Friend WithEvents bsifolderbrowser As DevExpress.XtraBars.BarStaticItem
Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents btRunEmailCheck As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonItem3 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents ListBox1 As ListBox
@ -175,4 +208,9 @@ Partial Class Form1
Friend WithEvents BarButtonItem4 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents OpenFileDialog1 As OpenFileDialog
Friend WithEvents btExtractMailAttachments As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroup4 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents OpenFileDialog2 As OpenFileDialog
Friend WithEvents OpenFileDialog3 As OpenFileDialog
Friend WithEvents BehaviorManager1 As DevExpress.Utils.Behaviors.BehaviorManager
End Class

View File

@ -154,7 +154,7 @@
NC43QzMyLjEsMTQuMywzMS44LDE0LDMxLjMsMTR6IiBjbGFzcz0iWWVsbG93IiAvPg0KPC9zdmc+Cw==
</value>
</data>
<data name="BarButtonItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<data name="btRunEmailCheck.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@ -227,6 +227,25 @@
MywzdjE2YzAsMC42LTAuNCwxLTEsMXMtMS0wLjQtMS0xVjEwaC0ydjEzICAgYzAsMS43LDEuMywzLDMs
M3MzLTEuMywzLTNWN2MwLTIuOC0yLjItNS01LTVzLTUsMi4yLTUsNXYxNmMwLDMuOSwzLjEsNyw3LDdz
Ny0zLjEsNy03VjEwSDIyeiIgY2xhc3M9IkJsYWNrIiAvPg0KICA8L2c+DQo8L3N2Zz4L
</value>
</data>
<data name="btExtractMailAttachments.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKQCAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLlJlZHtmaWxsOiNEMTFD
MUM7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7Zmls
bDojNzI3MjcyO30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuNzU7fQo8L3N0eWxl
Pg0KICA8ZyBpZD0iTWFpbCI+DQogICAgPHBhdGggZD0iTTE2LDE4LjNsMTQtOFYyNWMwLDAuNS0wLjUs
MS0xLDFIM2MtMC41LDAtMS0wLjUtMS0xVjEwLjNMMTYsMTguM3ogTTI5LDZIM0MyLjUsNiwyLDYuNSwy
LDd2MWwxNCw4bDE0LThWNyAgIEMzMCw2LjUsMjkuNSw2LDI5LDZ6IiBjbGFzcz0iQmxhY2siIC8+DQog
IDwvZz4NCjwvc3ZnPgs=
</value>
</data>
<metadata name="FolderBrowserDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@ -235,4 +254,13 @@
<metadata name="OpenFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>186, 17</value>
</metadata>
<metadata name="OpenFileDialog2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>327, 17</value>
</metadata>
<metadata name="OpenFileDialog3.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>468, 17</value>
</metadata>
<metadata name="BehaviorManager1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>609, 17</value>
</metadata>
</root>

View File

@ -1,8 +1,10 @@
Imports System.IO
Imports System.Text.RegularExpressions
Imports DevExpress.Data.Helpers.ExpressiveSortInfo
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports EmailProfiler.Common
Imports GdPicture14
Imports Independentsoft.Email.Mime
Imports Attachment = Independentsoft.Email.Mime.Attachment
@ -13,6 +15,7 @@ Public Class Form1
Private Shared _MyLogger As LogConfig
Private _Worklist As List(Of String)
Private MyDatabase As MSSQLServer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Try
_MyLogger = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"), Nothing, My.Application.Info.CompanyName, My.Application.Info.ProductName)
@ -64,7 +67,8 @@ Public Class Form1
End If
End Sub
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
Private Sub btRunEmailCheck_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btRunEmailCheck.ItemClick
' Check Email
ListBox1.Items.Clear()
Dim di As New DirectoryInfo(bsifolderbrowser.Caption)
' Get a reference to each file in that directory.
@ -132,7 +136,7 @@ Public Class Form1
oString = " ## Attachment NOT EXISTING ##"
_logger.Info(oString)
ListBox1.Items.Add(oString)
If System.IO.File.Exists(oAttachmentFileString) = False Then
If File.Exists(oAttachmentFileString) = False Then
_logger.Debug(String.Format("Trying to save attachment [{0}]", oAttachmentFileString))
Try
oAttachment.Save(oAttachmentFileString)
@ -190,7 +194,7 @@ Public Class Form1
End Try
End Function
Private Sub BarButtonItem4_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick
Private Sub btExtractPdfAttachments_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick
' FileOpen Dialog
Dim fileOpenDlg = OpenFileDialog1
@ -268,4 +272,33 @@ Public Class Form1
End Try
End Sub
Private Sub btExtractMailAttachments_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btExtractMailAttachments.ItemClick
' Hier verarbeiten wir eine ausgewählte EML-Datei
' und speichern alle Anhänge auf die Platte.
' Der Einstieg und der Ablauf entspricht dem des Services.
' Unterschied ist die lokale Datei
Dim connectionString As String = "Server=SDD-VMP04-SQL17\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd"
Dim oConfigData As ConfigData = New ConfigData() With {
.Debug = False,
.GDPictureVersion = "11.2024",
.UseWindream = False,
.ConnectionString = connectionString
}
Dim Worker As ExtractAttachmentsFromEMLFile = New ExtractAttachmentsFromEMLFile()
' FileOpen Dialog
Dim fileOpenDlg = OpenFileDialog2
If fileOpenDlg.ShowDialog() = DialogResult.OK Then
Dim oFilename = fileOpenDlg.FileName
' Call Extract Method
Worker.CallWorkerProcess(oFilename, oConfigData)
End If
End Sub
End Class

View File

@ -0,0 +1,30 @@
Imports System.IO
Imports DigitalData.Modules.Logging
Imports EmailProfiler.Common
Public Class ExtractAttachmentsFromEMLFile
Private ReadOnly _LogConfig As LogConfig
Sub New()
Dim oLogPath = Path.Combine(My.Application.Info.DirectoryPath, "Log")
_LogConfig = New LogConfig(LogConfig.PathType.CustomPath, oLogPath, Nothing, "Digital Data", "DD EmailProfiler TEST", 30)
End Sub
Public Sub CallWorkerProcess(pEMLFilename As String, pConfigData As ConfigData)
Dim oProfileIdForPolling = 0
Dim oWorker As New clsWorker(_LogConfig,
pConfigData.ConnectionString,
"",
oProfileIdForPolling,
pConfigData,
pEMLFilename)
oWorker.Start_WorkingProfiles(True)
End Sub
End Class

View File

@ -71,6 +71,9 @@
<Reference Include="Independentsoft.Email">
<HintPath>P:\Projekte DIGITAL DATA\DIGITAL DATA - Entwicklung\DLL_Bibliotheken\Email .NET\Bin\Independentsoft.Email.dll</HintPath>
</Reference>
<Reference Include="Mail">
<HintPath>P:\Visual Studio Projekte\Bibliotheken\Limilabs\Mail.dll\Mail.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
@ -105,6 +108,7 @@
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="TestClasses\ExtractAttachmentsFromEMLFile.vb" />
<Compile Include="Form1.vb">
<SubType>Form</SubType>
</Compile>
@ -154,6 +158,12 @@
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EmailProfiler.Common\EmailProfiler.Common.vbproj">
<Project>{9F748DCD-952E-40A0-9DAD-65BF8A39B231}</Project>
<Name>EmailProfiler.Common</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<Import Project="..\packages\GdPicture.runtimes.windows.14.2.90\build\net462\GdPicture.runtimes.windows.targets" Condition="Exists('..\packages\GdPicture.runtimes.windows.14.2.90\build\net462\GdPicture.runtimes.windows.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">