Compare commits
2 Commits
c6776b408b
...
01eaf9922b
| Author | SHA1 | Date | |
|---|---|---|---|
| 01eaf9922b | |||
| c91a7b82c7 |
@ -53,4 +53,5 @@ Public Class ClassCurrent
|
||||
Public Shared Property TEMP_WORK_FILES As List(Of String) = New List(Of String)
|
||||
Public Shared Property GDPictureLicense As String = "None"
|
||||
|
||||
Public Shared Property EmailAttachments As List(Of EmailAttachment) = New List(Of EmailAttachment)
|
||||
End Class
|
||||
|
||||
27
App/EmailProfiler.Common/Data/EmailAttachment.vb
Normal file
27
App/EmailProfiler.Common/Data/EmailAttachment.vb
Normal file
@ -0,0 +1,27 @@
|
||||
Imports System.IO
|
||||
Imports GdPicture14
|
||||
|
||||
Public Class EmailAttachment
|
||||
Public OrgFileName As String = ""
|
||||
Public DestFileName As String = ""
|
||||
Public DestFilePath As String = ""
|
||||
|
||||
Public FileStatus As GdPictureStatus = GdPictureStatus.OK
|
||||
|
||||
Public IsValidExtension As Boolean = True
|
||||
Public SendInfoMailNecessary As Boolean = False
|
||||
Public ErrorCodeValue As ErrorCode = ErrorCode.Unknown
|
||||
|
||||
Public EmbeddedFiles As List(Of EmailAttachment) = New List(Of EmailAttachment)
|
||||
|
||||
Public ReadOnly Property Extension As String
|
||||
Get
|
||||
If String.IsNullOrEmpty(OrgFileName) = False Then
|
||||
Return Path.GetExtension(OrgFileName)
|
||||
Else
|
||||
Return String.Empty
|
||||
End If
|
||||
End Get
|
||||
End Property
|
||||
|
||||
End Class
|
||||
@ -117,13 +117,14 @@
|
||||
<Compile Include="ClassDBConfig.vb" />
|
||||
<Compile Include="ClassCurrent.vb" />
|
||||
<Compile Include="clsEmail.IMAP.vb" />
|
||||
<Compile Include="Data\EmailAttachment.vb" />
|
||||
<Compile Include="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="ErrorCode.vb" />
|
||||
<Compile Include="Enum\ErrorCode.vb" />
|
||||
<Compile Include="MailContainer.vb" />
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
<Compile Include="My Project\Application.Designer.vb">
|
||||
|
||||
@ -3,4 +3,5 @@
|
||||
NoAttachments = 10001
|
||||
SenderValidationFailed = 10002
|
||||
PDFStructureCorrupt = 10003
|
||||
FileExtensionNotValid = 10004
|
||||
End Enum
|
||||
@ -14,6 +14,7 @@ Imports DigitalData.Modules.Patterns
|
||||
Imports System.Data.SqlClient
|
||||
Imports GdPicture14
|
||||
Imports Limilabs.Client.IMAP
|
||||
Imports System.Net.NetworkInformation
|
||||
|
||||
Public Class clsWorkEmail
|
||||
Private Const SUBJECT_MAX_LENGTH = 25
|
||||
@ -46,6 +47,12 @@ Public Class clsWorkEmail
|
||||
Private ReadOnly _RejectionTemplateId As Integer = 0
|
||||
Private ReadOnly _InfoTemplateId As Integer = 0
|
||||
|
||||
Private ReadOnly _LicenseManager As New LicenseManager
|
||||
|
||||
Private ReadOnly _ValidExtensions As List(Of String)
|
||||
Private ReadOnly _GraphicExtensions As List(Of String)
|
||||
|
||||
|
||||
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)
|
||||
@ -60,6 +67,8 @@ Public Class clsWorkEmail
|
||||
_InfoTemplateId = pInfoTemplateId
|
||||
_Logger.Debug($"_RejectionTemplateId: {_RejectionTemplateId}")
|
||||
|
||||
_ValidExtensions = New List(Of String) From {"pdf", "xls", "xlsx", "doc", "docx", "ppt", "pptx"}
|
||||
_GraphicExtensions = New List(Of String) From {"jpg", "bmp", "jpeg", "gif", "png", "xml"}
|
||||
|
||||
If pUseWindream Then
|
||||
_windream = New clsWindream_allgemein(LogConf)
|
||||
@ -67,6 +76,8 @@ Public Class clsWorkEmail
|
||||
_windreamConnectionString = WmConStr
|
||||
End If
|
||||
|
||||
_LicenseManager.RegisterKEY(GDPictureLicense)
|
||||
|
||||
_EmailAccountID = EmailAccountID
|
||||
SUBJECT_PRAFIX = EmlProfPraefix
|
||||
Catch ex As Exception
|
||||
@ -214,9 +225,11 @@ Public Class clsWorkEmail
|
||||
If IS_LOCAL_TEST = False Then
|
||||
InsertHistoryEntry(CurrentMail)
|
||||
End If
|
||||
End If
|
||||
|
||||
' Jetzt werden die ggf gefundenen Attachment-Fehler überprüft und verarbeitet
|
||||
SendMailToSenderIfAttachmentsAreNotValid()
|
||||
Return True
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
@ -226,6 +239,85 @@ Public Class clsWorkEmail
|
||||
End Try
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Wenn beim Herauslösen der Attachments festgestellt wurde,
|
||||
''' das ein Teil der Attachments fehlerhaft war, wird der Absender hier
|
||||
''' darüber informiert.
|
||||
''' </summary>
|
||||
Private Sub SendMailToSenderIfAttachmentsAreNotValid()
|
||||
|
||||
Dim oHtmlFilenameList As String = GetHtmlFilenameList()
|
||||
|
||||
If oHtmlFilenameList.IsNotNullOrEmpty() Then
|
||||
|
||||
AddToEmailQueueMSSQL(CurrentMail.MessageId, "", "Attachment invalid", _EmailAccountID, _InfoTemplateId, ErrorCode.PDFStructureCorrupt, oHtmlFilenameList, "")
|
||||
|
||||
End If
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Stellt die Dateinamen der Dateien zusammen, die nicht valide sind.
|
||||
''' Die Ausgabe erfolgt als HTML-Liste
|
||||
''' </summary>
|
||||
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
|
||||
|
||||
oComment = GetErrorCodeComment(attachmentItem.ErrorCodeValue)
|
||||
AddTrackingStatusMSSQL(CurrentMail.MessageId, attachmentItem.OrgFileName, "FILE CONSISTENCY NOT OK", oComment, "EMail Profiler")
|
||||
|
||||
filenameHtmlString += "<li>" + attachmentItem.OrgFileName + "</li>"
|
||||
End If
|
||||
|
||||
' prüfe evtl. eingebettete Anhänge
|
||||
Dim embeddedFilenamesHtmlString As String = String.Empty
|
||||
If attachmentItem.EmbeddedFiles.Count > 0 Then
|
||||
|
||||
For Each embeddedItem In attachmentItem.EmbeddedFiles
|
||||
If embeddedItem.SendInfoMailNecessary = True Then
|
||||
|
||||
oComment = GetErrorCodeComment(embeddedItem.ErrorCodeValue)
|
||||
AddTrackingStatusMSSQL(CurrentMail.MessageId, embeddedItem.OrgFileName, "EMBEDDED FILE CONSISTENCY NOT OK", oComment, "EMail Profiler")
|
||||
|
||||
embeddedFilenamesHtmlString += "<li>" + embeddedItem.OrgFileName + "</li>"
|
||||
End If
|
||||
Next
|
||||
|
||||
If embeddedFilenamesHtmlString.IsNotNullOrEmpty() Then
|
||||
embeddedFilenamesHtmlString = "<ul>" + embeddedFilenamesHtmlString + "</ul>"
|
||||
End If
|
||||
End If
|
||||
|
||||
If embeddedFilenamesHtmlString.IsNotNullOrEmpty() Then
|
||||
filenameHtmlString += embeddedFilenamesHtmlString
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
If filenameHtmlString.IsNotNullOrEmpty() Then
|
||||
filenameHtmlString = "<ul>" + filenameHtmlString + "</ul>"
|
||||
End If
|
||||
|
||||
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
|
||||
|
||||
''' <summary>
|
||||
''' Method to decide wether we use the old or the new
|
||||
''' Rejection E-mail method.
|
||||
@ -567,8 +659,8 @@ Public Class clsWorkEmail
|
||||
|
||||
If COPY2HDD(pCurrentMail, oRow("COPY_2_HDD"), oRow("PATH_ORIGINAL"), oRow("PATH_EMAIL_ERRORS"), True) = True Then
|
||||
|
||||
If EXTRACT_ATTACHMENTS(pCurrentMail, oExtractMainPath, oRow("PATH_EMAIL_ERRORS")) = True Then
|
||||
|
||||
'If EXTRACT_ATTACHMENTS(pCurrentMail, oExtractMainPath, oRow("PATH_EMAIL_ERRORS")) = True Then
|
||||
If ExtractAttachments(pCurrentMail, oExtractMainPath) = True Then
|
||||
Return True
|
||||
Else
|
||||
_Logger.Warn("!##Returning false from EXTRACT_ATTACHMENTS!##")
|
||||
@ -577,11 +669,8 @@ Public Class clsWorkEmail
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
|
||||
|
||||
Next
|
||||
|
||||
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
_Logger.Error(ex)
|
||||
@ -802,6 +891,222 @@ Public Class clsWorkEmail
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function ExtractAttachments(pCurrentMail As MailContainer, pExtractPath As String) As Boolean
|
||||
_Logger.Debug("In ExtractAttachments - pExtractPath = [{0}]", pExtractPath)
|
||||
|
||||
CURRENT_ATTMT_COUNT = 0
|
||||
TEMP_WORK_FILES.Clear()
|
||||
EmailAttachments.Clear()
|
||||
|
||||
If String.IsNullOrEmpty(CurrentTempMailPath) Then
|
||||
_Logger.Warn("ExtractAttachments() CurrentTempMailPath is NOTHING")
|
||||
Return True
|
||||
End If
|
||||
|
||||
If File.Exists(CurrentTempMailPath) = False Then
|
||||
_Logger.Warn($"ExtractAttachments() {CurrentTempMailPath} not existing")
|
||||
Return True
|
||||
End If
|
||||
|
||||
Dim oExtractTempPath As String = GetExtractTempPath(pExtractPath)
|
||||
If String.IsNullOrEmpty(oExtractTempPath) Then
|
||||
_Logger.Warn("ExtractAttachments() oExtractTempPath is NOTHING")
|
||||
Return True
|
||||
End If
|
||||
|
||||
Dim oAttachmentCount As Integer = 0
|
||||
|
||||
For Each oAttachment As MimeData In pCurrentMail.Mail.Attachments
|
||||
_Logger.Info("Working on Attachment [{0}]", oAttachment.SafeFileName)
|
||||
|
||||
Dim oEmailAttachment As EmailAttachment = New EmailAttachment() With
|
||||
{
|
||||
.OrgFileName = oAttachment.SafeFileName
|
||||
}
|
||||
EmailAttachments.Add(oEmailAttachment)
|
||||
|
||||
If ValidateFileExtension(oEmailAttachment) = False Then
|
||||
Continue For
|
||||
End If
|
||||
|
||||
oEmailAttachment.DestFileName = $"{pCurrentMail.MessageId}~Attm{oAttachmentCount}{oEmailAttachment.Extension}"
|
||||
_Logger.Debug("Final Filename for Attachment: [{0}]", oEmailAttachment.DestFileName)
|
||||
|
||||
oEmailAttachment.DestFilePath = Path.Combine(oExtractTempPath, oEmailAttachment.DestFileName)
|
||||
_Logger.Debug("Final Path for Attachment: [{0}]", oEmailAttachment.DestFilePath)
|
||||
|
||||
If CleanUpFilePath(oEmailAttachment.DestFilePath) = False Then
|
||||
_Logger.Warn("ExtractAttachments() Could not clean up filepath!")
|
||||
MESSAGE_ERROR = True
|
||||
Continue For
|
||||
End If
|
||||
|
||||
' Sichere Datei auf Platte
|
||||
If SaveFileToDisk(oAttachment, oEmailAttachment.DestFilePath) = True Then
|
||||
_Logger.Info(String.Format("Attachment saved to [{0}]", oEmailAttachment.DestFilePath))
|
||||
|
||||
' Schreibe Satz nach EMLP_HISTORY
|
||||
If (InsertAttachmentHistoryEntry(pCurrentMail, oEmailAttachment.OrgFileName, oEmailAttachment.DestFileName)) = True Then
|
||||
oAttachmentCount += 1
|
||||
End If
|
||||
Else
|
||||
_Logger.Warn($"Error while saving AttachmentName: {oEmailAttachment.DestFilePath}")
|
||||
MESSAGE_ERROR = True
|
||||
Continue For
|
||||
End If
|
||||
|
||||
' Verarbeite PDF Files
|
||||
If oEmailAttachment.Extension.Equals(".pdf", StringComparison.InvariantCultureIgnoreCase) = True Then
|
||||
|
||||
Dim oGdPicturePDF As New GdPicturePDF()
|
||||
Dim oStatus As GdPictureStatus = oGdPicturePDF.LoadFromFile(oEmailAttachment.DestFilePath, True)
|
||||
If oStatus = GdPictureStatus.OK Then
|
||||
' Verarbeite Embedded Attachments
|
||||
WorkEmbeddedAttachments(oEmailAttachment, oGdPicturePDF)
|
||||
|
||||
Else
|
||||
oAttachmentCount -= 1
|
||||
CleanUpFilePath(oEmailAttachment.DestFilePath)
|
||||
oEmailAttachment.FileStatus = oStatus
|
||||
oEmailAttachment.ErrorCodeValue = ErrorCode.PDFStructureCorrupt
|
||||
oEmailAttachment.SendInfoMailNecessary = True
|
||||
|
||||
MESSAGE_ERROR = True
|
||||
Continue For
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
|
||||
TEMP_WORK_FILES.Add(oEmailAttachment.DestFilePath)
|
||||
Next
|
||||
|
||||
CURRENT_ATTMT_COUNT = oAttachmentCount
|
||||
|
||||
If MESSAGE_ERROR = True Then
|
||||
WorkTempFiles("delete")
|
||||
Return False
|
||||
End If
|
||||
|
||||
WorkTempFiles("move")
|
||||
Return True
|
||||
|
||||
End Function
|
||||
|
||||
Private Sub WorkEmbeddedAttachments(pEmailAttachment As EmailAttachment, pGDPicturePDF As GdPicturePDF)
|
||||
|
||||
Dim embeddedFileCount As Integer = pGDPicturePDF.GetEmbeddedFileCount()
|
||||
If embeddedFileCount <= 0 Then
|
||||
' nothing to do
|
||||
Return
|
||||
End If
|
||||
|
||||
For i As Integer = 0 To embeddedFileCount - 1
|
||||
Dim oEmbAttName As String = pGDPicturePDF.GetEmbeddedFileName(i)
|
||||
|
||||
Dim oEmbeddedFile As EmailAttachment = New EmailAttachment() With
|
||||
{
|
||||
.OrgFileName = oEmbAttName
|
||||
}
|
||||
pEmailAttachment.EmbeddedFiles.Add(oEmbeddedFile)
|
||||
|
||||
oEmbeddedFile.FileStatus = pGDPicturePDF.GetStat()
|
||||
If oEmbeddedFile.FileStatus = GdPictureStatus.OK Then
|
||||
If ValidateFileExtension(oEmbeddedFile) = False Then
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim FileSize As Integer = pGDPicturePDF.GetEmbeddedFileSize(i)
|
||||
If pGDPicturePDF.GetStat() = GdPictureStatus.OK Then
|
||||
Dim FileData As Byte() = New Byte(FileSize) {}
|
||||
Dim status As GdPictureStatus = pGDPicturePDF.ExtractEmbeddedFile(0, FileData)
|
||||
|
||||
oEmbeddedFile.FileStatus = status
|
||||
If status <> GdPictureStatus.OK Or FileSize = 0 Then
|
||||
oEmbeddedFile.ErrorCodeValue = ErrorCode.PDFStructureCorrupt
|
||||
oEmbeddedFile.SendInfoMailNecessary = True
|
||||
Continue For
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Private Function SaveFileToDisk(pAttachment As MimeData, pAttachmentFilePath As String) As Boolean
|
||||
|
||||
Try
|
||||
_Logger.Debug(String.Format("Trying to save attachment [{0}]", pAttachmentFilePath))
|
||||
pAttachment.Save(pAttachmentFilePath)
|
||||
|
||||
Dim oFileInfo As New FileInfo(pAttachmentFilePath)
|
||||
Dim oFileLength As Long = oFileInfo.Length
|
||||
If oFileLength <= 2 Then
|
||||
_Logger.Warn($"##!! oFileLength for AttachmentObjects is <=2 !!##")
|
||||
CleanUpFilePath(pAttachmentFilePath)
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function CleanUpFilePath(pFilePath As String) As Boolean
|
||||
Try
|
||||
If File.Exists(pFilePath) Then
|
||||
_Logger.Info("File [{0}] will be deleted!", pFilePath)
|
||||
File.Delete(pFilePath)
|
||||
End If
|
||||
|
||||
Return True
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error(ex)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function GetExtractTempPath(pExtractPath As String) As String
|
||||
Try
|
||||
Dim oExtractTempPath = Path.Combine(pExtractPath, "Temp")
|
||||
If Directory.Exists(oExtractTempPath) = False Then
|
||||
Directory.CreateDirectory(oExtractTempPath)
|
||||
End If
|
||||
|
||||
Return oExtractTempPath
|
||||
|
||||
Catch ex As Exception
|
||||
_Logger.Error(ex)
|
||||
Return String.Empty
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function ValidateFileExtension(pAttachmentData As EmailAttachment) As Boolean
|
||||
_Logger.Debug("Validate extension of [{0}]", pAttachmentData.OrgFileName)
|
||||
|
||||
Dim lowerFilename = pAttachmentData.OrgFileName.ToLower
|
||||
Dim oIsValidExtension = _ValidExtensions.Any(Function(ext) lowerFilename.EndsWith(ext))
|
||||
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
|
||||
End If
|
||||
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Function EXTRACT_ATTACHMENTS(pCurrentMail As MailContainer, pExtractPath As String, pErrorPath As String)
|
||||
_Logger.Debug("In EXTRACT_ATTACHMENTS...")
|
||||
|
||||
@ -981,24 +1286,26 @@ Public Class clsWorkEmail
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
Private Sub WorkTempFiles(pACT As String)
|
||||
For Each _file In TEMP_WORK_FILES
|
||||
_Logger.Debug("Working ({0}) on temp work file: [{1}]", pACT, _file)
|
||||
|
||||
If File.Exists(_file) Then
|
||||
If pACT = "Delete" Then
|
||||
Private Sub WorkTempFiles(pAction As String)
|
||||
For Each _file In TEMP_WORK_FILES
|
||||
_Logger.Debug("Working ({0}) on temp work file: [{1}]", pAction, _file)
|
||||
Try
|
||||
If File.Exists(_file) Then
|
||||
If pAction = "Delete" Then
|
||||
File.Delete(_file)
|
||||
Catch ex As Exception
|
||||
_Logger.Error(ex)
|
||||
_Logger.Warn("Could not delete the tempworkfile : [{0}]", _file)
|
||||
End Try
|
||||
ElseIf pACT = "move" Then
|
||||
ElseIf pAction = "move" Then
|
||||
File.Move(_file, _file.Replace("\Temp", ""))
|
||||
End If
|
||||
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_Logger.Error(ex)
|
||||
_Logger.Warn("Could not delete/move the tempworkfile : [{0}]", _file)
|
||||
MESSAGE_ERROR = True
|
||||
End Try
|
||||
Next
|
||||
|
||||
TEMP_WORK_FILES.Clear()
|
||||
End Sub
|
||||
|
||||
|
||||
96
App/wisag_check_Att/Form1.Designer.vb
generated
96
App/wisag_check_Att/Form1.Designer.vb
generated
@ -24,53 +24,34 @@ Partial Class Form1
|
||||
Private Sub InitializeComponent()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
|
||||
Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
|
||||
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
|
||||
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
|
||||
Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
|
||||
Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
|
||||
Me.FolderBrowserDialog1 = New System.Windows.Forms.FolderBrowserDialog()
|
||||
Me.bsifolderbrowser = New DevExpress.XtraBars.BarStaticItem()
|
||||
Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
|
||||
Me.BarButtonItem3 = New DevExpress.XtraBars.BarButtonItem()
|
||||
Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
|
||||
Me.ListBox1 = New System.Windows.Forms.ListBox()
|
||||
Me.bsitemppath = New DevExpress.XtraBars.BarStaticItem()
|
||||
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
|
||||
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
|
||||
Me.RibbonPageGroup2 = 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()
|
||||
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'RibbonControl1
|
||||
'
|
||||
Me.RibbonControl1.ExpandCollapseItem.Id = 0
|
||||
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.SearchEditItem, Me.RibbonControl1.ExpandCollapseItem, Me.BarButtonItem1, Me.bsifolderbrowser, Me.BarButtonItem2, Me.BarButtonItem3, Me.bsitemppath})
|
||||
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.Location = New System.Drawing.Point(0, 0)
|
||||
Me.RibbonControl1.MaxItemId = 6
|
||||
Me.RibbonControl1.MaxItemId = 7
|
||||
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.StatusBar = Me.RibbonStatusBar1
|
||||
'
|
||||
'RibbonPage1
|
||||
'
|
||||
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2})
|
||||
Me.RibbonPage1.Name = "RibbonPage1"
|
||||
Me.RibbonPage1.Text = "RibbonPage1"
|
||||
'
|
||||
'RibbonPageGroup1
|
||||
'
|
||||
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem1)
|
||||
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem3)
|
||||
Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
|
||||
Me.RibbonPageGroup1.Text = "Konfig"
|
||||
'
|
||||
'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)
|
||||
'
|
||||
'BarButtonItem1
|
||||
'
|
||||
Me.BarButtonItem1.Caption = "choose directory"
|
||||
@ -100,12 +81,42 @@ Partial Class Form1
|
||||
Me.BarButtonItem3.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem3.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
|
||||
Me.BarButtonItem3.Name = "BarButtonItem3"
|
||||
'
|
||||
'bsitemppath
|
||||
'
|
||||
Me.bsitemppath.Caption = "BarStaticItem1"
|
||||
Me.bsitemppath.Id = 5
|
||||
Me.bsitemppath.ImageOptions.SvgImage = CType(resources.GetObject("bsitemppath.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
|
||||
Me.bsitemppath.Name = "bsitemppath"
|
||||
Me.bsitemppath.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
|
||||
'
|
||||
'RibbonPage1
|
||||
'
|
||||
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2, Me.RibbonPageGroup3})
|
||||
Me.RibbonPage1.Name = "RibbonPage1"
|
||||
Me.RibbonPage1.Text = "RibbonPage1"
|
||||
'
|
||||
'RibbonPageGroup1
|
||||
'
|
||||
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem1)
|
||||
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem3)
|
||||
Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
|
||||
Me.RibbonPageGroup1.Text = "Konfig"
|
||||
'
|
||||
'RibbonPageGroup2
|
||||
'
|
||||
Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItem2)
|
||||
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
|
||||
@ -115,13 +126,23 @@ Partial Class Form1
|
||||
Me.ListBox1.Size = New System.Drawing.Size(800, 273)
|
||||
Me.ListBox1.TabIndex = 2
|
||||
'
|
||||
'bsitemppath
|
||||
'RibbonPageGroup3
|
||||
'
|
||||
Me.bsitemppath.Caption = "BarStaticItem1"
|
||||
Me.bsitemppath.Id = 5
|
||||
Me.bsitemppath.ImageOptions.SvgImage = CType(resources.GetObject("BarStaticItem1.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
|
||||
Me.bsitemppath.Name = "bsitemppath"
|
||||
Me.bsitemppath.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem4)
|
||||
Me.RibbonPageGroup3.Name = "RibbonPageGroup3"
|
||||
Me.RibbonPageGroup3.Text = "PDF Handling"
|
||||
'
|
||||
'BarButtonItem4
|
||||
'
|
||||
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"
|
||||
'
|
||||
'OpenFileDialog1
|
||||
'
|
||||
Me.OpenFileDialog1.Filter = "PDF Files|*.pdf"
|
||||
Me.OpenFileDialog1.InitialDirectory = "e:\"
|
||||
'
|
||||
'Form1
|
||||
'
|
||||
@ -151,4 +172,7 @@ Partial Class Form1
|
||||
Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
|
||||
Friend WithEvents ListBox1 As ListBox
|
||||
Friend WithEvents bsitemppath As DevExpress.XtraBars.BarStaticItem
|
||||
Friend WithEvents BarButtonItem4 As DevExpress.XtraBars.BarButtonItem
|
||||
Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
|
||||
Friend WithEvents OpenFileDialog1 As OpenFileDialog
|
||||
End Class
|
||||
|
||||
@ -120,7 +120,7 @@
|
||||
<assembly alias="DevExpress.Data.v21.2" name="DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<data name="BarButtonItem1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
||||
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
||||
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJQCAAAC77u/
|
||||
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
|
||||
@ -138,7 +138,7 @@
|
||||
</data>
|
||||
<data name="bsifolderbrowser.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
||||
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
||||
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJQCAAAC77u/
|
||||
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
|
||||
@ -156,7 +156,7 @@
|
||||
</data>
|
||||
<data name="BarButtonItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
||||
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
||||
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAAMDAAAC77u/
|
||||
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
|
||||
@ -176,7 +176,7 @@
|
||||
</data>
|
||||
<data name="BarButtonItem3.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
||||
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
||||
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJQCAAAC77u/
|
||||
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
|
||||
@ -192,9 +192,9 @@
|
||||
NC43QzMyLjEsMTQuMywzMS44LDE0LDMxLjMsMTR6IiBjbGFzcz0iWWVsbG93IiAvPg0KPC9zdmc+Cw==
|
||||
</value>
|
||||
</data>
|
||||
<data name="BarStaticItem1.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<data name="bsitemppath.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjE5LjIsIFZlcnNpb249MTkuMi4z
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
||||
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
||||
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJQCAAAC77u/
|
||||
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
|
||||
@ -208,9 +208,31 @@
|
||||
MC40QzIuMSwyNS4zLDIuMiwyNS4zLDIuMiwyNS4yeiIgY2xhc3M9IlllbGxvdyIgLz4NCiAgPC9nPg0K
|
||||
ICA8cGF0aCBkPSJNMzEuMywxNEg5LjZMNCwyNmgyMS44YzAuNSwwLDEuMS0wLjMsMS4zLTAuN0wzMiwx
|
||||
NC43QzMyLjEsMTQuMywzMS44LDE0LDMxLjMsMTR6IiBjbGFzcz0iWWVsbG93IiAvPg0KPC9zdmc+Cw==
|
||||
</value>
|
||||
</data>
|
||||
<data name="BarButtonItem4.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
||||
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
||||
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAMkCAAAC77u/
|
||||
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
|
||||
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
|
||||
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
|
||||
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
|
||||
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
|
||||
LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
|
||||
MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
|
||||
Y2l0eTowLjc1O30KPC9zdHlsZT4NCiAgPGcgaWQ9IkF0dGFjaG1lbnRzIj4NCiAgICA8cGF0aCBkPSJN
|
||||
MjIsMTB2MTNjMCwyLjgtMi4yLDUtNSw1cy01LTIuMi01LTVWN2MwLTEuNywxLjMtMywzLTNzMywxLjMs
|
||||
MywzdjE2YzAsMC42LTAuNCwxLTEsMXMtMS0wLjQtMS0xVjEwaC0ydjEzICAgYzAsMS43LDEuMywzLDMs
|
||||
M3MzLTEuMywzLTNWN2MwLTIuOC0yLjItNS01LTVzLTUsMi4yLTUsNXYxNmMwLDMuOSwzLjEsNyw3LDdz
|
||||
Ny0zLjEsNy03VjEwSDIyeiIgY2xhc3M9IkJsYWNrIiAvPg0KICA8L2c+DQo8L3N2Zz4L
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="FolderBrowserDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="OpenFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>186, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@ -1,17 +1,23 @@
|
||||
Imports System.IO
|
||||
Imports System.ComponentModel
|
||||
Imports System.IO
|
||||
Imports System.Net.Mail
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports DigitalData.Modules
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports GdPicture14
|
||||
Imports Independentsoft.Email.Mime
|
||||
Imports Attachment = Independentsoft.Email.Mime.Attachment
|
||||
Imports LicenseManager = GdPicture14.LicenseManager
|
||||
Public Class Form1
|
||||
Private Logger As DigitalData.Modules.Logging.Logger
|
||||
Private _logger As DigitalData.Modules.Logging.Logger
|
||||
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)
|
||||
Logger = MyLogger.GetLogger()
|
||||
_logger = MyLogger.GetLogger()
|
||||
MyLogger.Debug = True
|
||||
|
||||
Dim dbResult As Boolean
|
||||
@ -108,66 +114,66 @@ Public Class Form1
|
||||
End If
|
||||
Dim oAttachmentFileString
|
||||
oString = String.Format(" Working on Attachment [{0}]", oAttachment.GetFileName)
|
||||
Logger.Info(oString)
|
||||
_logger.Info(oString)
|
||||
ListBox1.Items.Add(oString)
|
||||
Try
|
||||
Dim oFilename = oAttachment.GetFileName
|
||||
oFilename = CleanInput(oFilename)
|
||||
Logger.Debug($"oFilename [{oFilename}]")
|
||||
_logger.Debug($"oFilename [{oFilename}]")
|
||||
If oFilename = String.Empty Then
|
||||
oFilename = oAttachment.GetFileName
|
||||
End If
|
||||
Dim oAttFilenameonly = $"{oMSGID}~{oFilename}"
|
||||
oAttachmentFileString = Path.Combine(bsitemppath.Caption, oAttFilenameonly)
|
||||
Logger.Debug($"oAttachmentFileString [{oAttachmentFileString}]")
|
||||
_logger.Debug($"oAttachmentFileString [{oAttachmentFileString}]")
|
||||
Dim oSQL = $"SELECT * FROM IDB.DBO.TBIDB_DOC_INFO WHERE FILENAME_EXT = '{oAttFilenameonly}'"
|
||||
Dim oDT As DataTable = MyDatabase.GetDatatable(oSQL)
|
||||
If Not IsNothing(oDT) Then
|
||||
If oDT.Rows.Count = 0 Then
|
||||
oString = " ## Attachment NOT EXISTING ##"
|
||||
Logger.Info(oString)
|
||||
_logger.Info(oString)
|
||||
ListBox1.Items.Add(oString)
|
||||
If System.IO.File.Exists(oAttachmentFileString) = False Then
|
||||
Logger.Debug(String.Format("Trying to save attachment [{0}]", oAttachmentFileString))
|
||||
_logger.Debug(String.Format("Trying to save attachment [{0}]", oAttachmentFileString))
|
||||
Try
|
||||
oAttachment.Save(oAttachmentFileString)
|
||||
Dim oFileInfo As New FileInfo(oAttachmentFileString)
|
||||
Dim oFileLenth As Long = oFileInfo.Length
|
||||
If oFileLenth > 0 Then
|
||||
Logger.Info(String.Format(" Attachment saved to [{0}]", oAttachmentFileString))
|
||||
_logger.Info(String.Format(" Attachment saved to [{0}]", oAttachmentFileString))
|
||||
Else
|
||||
Logger.Warn($"##!! oFileLenth for AttachmentObjects is 0 !!##")
|
||||
_logger.Warn($"##!! oFileLenth for AttachmentObjects is 0 !!##")
|
||||
Try
|
||||
File.Delete(oAttachmentFileString)
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Warn($"Error while saving attachment-name: {ex.Message} - AttachmentName: {oAttachmentFileString}")
|
||||
_logger.Warn($"Error while saving attachment-name: {ex.Message} - AttachmentName: {oAttachmentFileString}")
|
||||
End Try
|
||||
Else
|
||||
ListBox1.Items.Add("EXATTMNT - Attachment (" & oAttachmentFileString & ") already existing!")
|
||||
Logger.Info("EXATTMNT - Attachment (" & oAttachmentFileString & ") already existing!", False, "EXTRACT_ATTACHMENTS")
|
||||
_logger.Info("EXATTMNT - Attachment (" & oAttachmentFileString & ") already existing!", False, "EXTRACT_ATTACHMENTS")
|
||||
End If
|
||||
Else
|
||||
oString = " ALL OK! EXISTING"
|
||||
Logger.Info(oString)
|
||||
_logger.Info(oString)
|
||||
ListBox1.Items.Add(oString)
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Warn($"Error while creating and saving attachment-name: {ex.Message} - AttachmentName: {oAttachmentFileString}")
|
||||
_logger.Warn($"Error while creating and saving attachment-name: {ex.Message} - AttachmentName: {oAttachmentFileString}")
|
||||
|
||||
End Try
|
||||
oMessage = Nothing
|
||||
Next
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
_logger.Error(ex)
|
||||
End Try
|
||||
|
||||
|
||||
@ -180,10 +186,86 @@ Public Class Form1
|
||||
' If we timeout when replacing invalid characters,
|
||||
' we should return String.Empty.
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
_logger.Error(ex)
|
||||
Return String.Empty
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Sub BarButtonItem4_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick
|
||||
' FileOpen Dialog
|
||||
Dim fileOpenDlg = OpenFileDialog1
|
||||
|
||||
If fileOpenDlg.ShowDialog() = DialogResult.OK Then
|
||||
Dim oFilename = fileOpenDlg.FileName
|
||||
|
||||
' Call Extract Method
|
||||
ExtractEmbeddedPDFAttachments(oFilename)
|
||||
|
||||
End If
|
||||
|
||||
End Sub
|
||||
Private Sub ExtractEmbeddedPDFAttachments(pFilename As String)
|
||||
Try
|
||||
Dim oSQLGDPicture = "SELECT LICENSE FROM TBDD_3RD_PARTY_MODULES WHERE ACTIVE = 1"
|
||||
Dim GDPictureLicense As String = "21182889975216572111813147150675976632"
|
||||
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 oFileInfo As New FileInfo(pFilename)
|
||||
|
||||
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(pFilename, True)
|
||||
If oStatus <> GdPictureStatus.OK Then
|
||||
oPDFConsistent = False
|
||||
Dim oResult = $"PDF-Consistency of attached file {pFilename} is not ok. ({oStatus.ToString})"
|
||||
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)
|
||||
Dim 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."
|
||||
|
||||
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."
|
||||
|
||||
Continue For
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
|
||||
|
||||
End Try
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
@ -60,6 +60,9 @@
|
||||
<Reference Include="DigitalData.Modules.Logging">
|
||||
<HintPath>..\..\..\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="GdPicture.NET.14">
|
||||
<HintPath>D:\ProgramFiles\GdPicture.net 14\Redist\GdPicture.NET (.NET Framework 4.5)\GdPicture.NET.14.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Independentsoft.Email">
|
||||
<HintPath>P:\Projekte DIGITAL DATA\DIGITAL DATA - Entwicklung\DLL_Bibliotheken\Email .NET\Bin\Independentsoft.Email.dll</HintPath>
|
||||
</Reference>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user