Version 2.4.2.2 - Remove Independentsoft Email, Replace with Limilabs.Mail, Remove manual Email Data Exctraction, Support Eml Files

This commit is contained in:
Jonathan Jenne
2021-08-23 10:47:04 +02:00
parent 3da7e37c91
commit 0704b07de7
11 changed files with 604 additions and 580 deletions

View File

@@ -1,106 +1,105 @@
Imports Independentsoft Imports Limilabs.Mail
Imports Limilabs.Mail
Imports Limilabs.Mail.MSG Imports Limilabs.Mail.MSG
Imports System.Text.RegularExpressions Imports System.Text.RegularExpressions
Public Class ClassEmailHeaderExtractor Public Class ClassEmailHeaderExtractor
''' <summary> '''' <summary>
''' Extrahiert die Headerinformationen aus einem msg Objekt mithilfe der MSG.NET Klasse '''' Extrahiert die Headerinformationen aus einem msg Objekt mithilfe der MSG.NET Klasse
''' </summary> '''' </summary>
''' <param name="msg">Eine Email vom Typ Msg.Message</param> '''' <param name="msg">Eine Email vom Typ Msg.Message</param>
''' <returns>Headerinformationen als String oder Nothing wenn ein Fehler aufgetreten ist.</returns> '''' <returns>Headerinformationen als String oder Nothing wenn ein Fehler aufgetreten ist.</returns>
Public Shared Function getMessageHeaders(msg As Msg.Message) 'Public Shared Function getMessageHeaders(msg As Msg.Message)
Try ' Try
Dim headers = msg.TransportMessageHeaders.Replace(vbCrLf, " ") ' Dim headers = msg.TransportMessageHeaders.Replace(vbCrLf, " ")
Return headers ' Return headers
Catch ex As Exception ' Catch ex As Exception
Return Nothing ' Return Nothing
End Try ' End Try
End Function 'End Function
''' <summary> '''' <summary>
''' Extrahiert aus den Headerinformationen anhand einer Liste von Regular Expressions eine Absenderadresse. '''' Extrahiert aus den Headerinformationen anhand einer Liste von Regular Expressions eine Absenderadresse.
''' </summary> '''' </summary>
''' <param name="messageHeaders">Headerinformationen die von getMessageHeaders erzeugt wurden.</param> '''' <param name="messageHeaders">Headerinformationen die von getMessageHeaders erzeugt wurden.</param>
''' <param name="RegexList">Eine Liste von Regular Expressions</param> '''' <param name="RegexList">Eine Liste von Regular Expressions</param>
''' <param name="RegexGroup">Die Ergebnisgruppe, die die Adresse enthält</param> '''' <param name="RegexGroup">Die Ergebnisgruppe, die die Adresse enthält</param>
''' <returns>Eine Emailadresse oder Nothing, wenn keine der Regular Expressions ein Ergebnis lieferte.</returns> '''' <returns>Eine Emailadresse oder Nothing, wenn keine der Regular Expressions ein Ergebnis lieferte.</returns>
Public Shared Function extractFromAddress(messageHeaders As String, RegexList As List(Of Regex), Optional RegexGroup As Integer = 1) 'Public Shared Function extractFromAddress(messageHeaders As String, RegexList As List(Of Regex), Optional RegexGroup As Integer = 1)
If IsNothing(messageHeaders) Then ' If IsNothing(messageHeaders) Then
Return Nothing ' Return Nothing
End If ' End If
For Each rx In RegexList ' For Each rx In RegexList
Dim match As Match = rx.Match(messageHeaders) ' Dim match As Match = rx.Match(messageHeaders)
Dim email As String = match.Groups(RegexGroup).Value ' Dim email As String = match.Groups(RegexGroup).Value
If Not String.IsNullOrWhiteSpace(email) Then ' If Not String.IsNullOrWhiteSpace(email) Then
Return email ' Return email
End If ' End If
Next ' Next
Return Nothing ' Return Nothing
End Function 'End Function
Public Shared Function extractFromHeader(messageHeaders As String, Regex As String) 'Public Shared Function extractFromHeader(messageHeaders As String, Regex As String)
Try ' Try
Dim result = Nothing ' Dim result = Nothing
Dim i As Integer = 0 ' Dim i As Integer = 0
If IsNothing(messageHeaders) Then ' If IsNothing(messageHeaders) Then
Return Nothing ' Return Nothing
End If ' End If
' einen Regulären Ausdruck laden ' ' einen Regulären Ausdruck laden
Dim strRegex As String = Regex ' Dim strRegex As String = Regex
Dim myRegex As New Regex(strRegex, RegexOptions.IgnorePatternWhitespace Or RegexOptions.IgnoreCase) ' Dim myRegex As New Regex(strRegex, RegexOptions.IgnorePatternWhitespace Or RegexOptions.IgnoreCase)
Dim strTargetString As String = messageHeaders.Trim ' Dim strTargetString As String = messageHeaders.Trim
' die Vorkommen im String auslesen ' ' die Vorkommen im String auslesen
For Each myMatch As Match In myRegex.Matches(strTargetString) ' For Each myMatch As Match In myRegex.Matches(strTargetString)
If myMatch.Success Then ' If myMatch.Success Then
LOGGER.Debug("Match success. Matched Value: [{0}]", myMatch.Value) ' LOGGER.Debug("Match success. Matched Value: [{0}]", myMatch.Value)
If myMatch.Value <> "" Then ' If myMatch.Value <> "" Then
If i = 0 Then ' If i = 0 Then
result = myMatch.Value.ToString ' result = myMatch.Value.ToString
Else ' Else
result = result & ";" & myMatch.Value.ToString ' result = result & ";" & myMatch.Value.ToString
End If ' End If
i += 1 ' i += 1
End If ' End If
Else ' Else
LOGGER.Debug("Match failed!") ' LOGGER.Debug("Match failed!")
End If ' End If
Next ' Next
LOGGER.Debug("Extracted value: [{0}]", result) ' LOGGER.Debug("Extracted value: [{0}]", result)
Return result ' Return result
Catch ex As Exception ' Catch ex As Exception
LOGGER.Error(ex) ' LOGGER.Error(ex)
MsgBox("Unexpected Error in extractFromHeader: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) ' MsgBox("Unexpected Error in extractFromHeader: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return Nothing ' Return Nothing
End Try ' End Try
End Function 'End Function
''' <summary> '''' <summary>
''' Extrahiert aus den Headerinformationen anhand einer Liste von Regular Expressions eine Empfängeradresse. '''' Extrahiert aus den Headerinformationen anhand einer Liste von Regular Expressions eine Empfängeradresse.
''' </summary> '''' </summary>
''' <param name="messageHeaders">Headerinformationen die von getMessageHeaders erzeugt wurden.</param> '''' <param name="messageHeaders">Headerinformationen die von getMessageHeaders erzeugt wurden.</param>
''' <param name="RegexList">Eine Liste von Regular Expressions</param> '''' <param name="RegexList">Eine Liste von Regular Expressions</param>
''' <param name="RegexGroup">Die Ergebnisgruppe, die die Adresse enthält</param> '''' <param name="RegexGroup">Die Ergebnisgruppe, die die Adresse enthält</param>
''' <returns>Eine Emailadresse oder Nothing, wenn keine der Regular Expressions ein Ergebnis lieferte.</returns> '''' <returns>Eine Emailadresse oder Nothing, wenn keine der Regular Expressions ein Ergebnis lieferte.</returns>
Public Shared Function extractToAddress(messageHeaders As String, RegexList As List(Of Regex), Optional RegexGroup As Integer = 1) 'Public Shared Function extractToAddress(messageHeaders As String, RegexList As List(Of Regex), Optional RegexGroup As Integer = 1)
If IsNothing(messageHeaders) Then ' If IsNothing(messageHeaders) Then
Return Nothing ' Return Nothing
End If ' End If
For Each rx In RegexList ' For Each rx In RegexList
Dim match As Match = rx.Match(messageHeaders) ' Dim match As Match = rx.Match(messageHeaders)
Dim email As String = match.Groups(RegexGroup).Value ' Dim email As String = match.Groups(RegexGroup).Value
If Not String.IsNullOrWhiteSpace(email) Then ' If Not String.IsNullOrWhiteSpace(email) Then
Return email ' Return email
End If ' End If
Next ' Next
Return Nothing ' Return Nothing
End Function 'End Function
End Class End Class

View File

@@ -2,18 +2,16 @@
Imports System.Guid Imports System.Guid
Imports System.Text.RegularExpressions Imports System.Text.RegularExpressions
Imports DevExpress.XtraEditors Imports DevExpress.XtraEditors
Imports Independentsoft
Imports DigitalData.Modules.Language Imports DigitalData.Modules.Language
Imports Limilabs.Mail Imports Limilabs.Mail
Public Class ClassFilehandle Public Class ClassFilehandle
Public Shared Function Decide_FileHandle(pFilename As String, pHandletype As String) Public Shared Function Decide_FileHandle(pFilename As String, pHandletype As String)
Try Try
If pFilename.EndsWith(".msg") Then If pFilename.ToUpper.EndsWith(".MSG") Or pFilename.ToUpper.EndsWith(".EML") Then
CURRENT_MESSAGEID = "" CURRENT_MESSAGEID = ""
Dim oMsg As New Msg.Message(pFilename) Dim oMail As IMail = EMAIL.Load_Email(pFilename)
If oMsg.Attachments.Count > 0 Then If oMail.Attachments.Count > 0 Then
Dim oTitle As String Dim oTitle As String
Dim oMessage As String Dim oMessage As String
@@ -67,8 +65,7 @@ Public Class ClassFilehandle
Dim oSuccess As Boolean = False Dim oSuccess As Boolean = False
LOGGER.Info("Converting file to Eml if needed: [{0}]", pEmailFilePath) LOGGER.Info("Converting file to Eml if needed: [{0}]", pEmailFilePath)
Dim oEmailFilePath = EMAIL.Convert_MsgToEml(pEmailFilePath) Dim oEmail As IMail = EMAIL.Load_Email(pEmailFilePath)
Dim oEmail As IMail = EMAIL.Load_Email(oEmailFilePath)
If oEmail.MessageID IsNot Nothing Then If oEmail.MessageID IsNot Nothing Then
CURRENT_MESSAGEID = oEmail.MessageID CURRENT_MESSAGEID = oEmail.MessageID
@@ -77,13 +74,13 @@ Public Class ClassFilehandle
CURRENT_MESSAGEID = NewGuid.ToString() CURRENT_MESSAGEID = NewGuid.ToString()
End If End If
Dim oEmailFilePathWithoutAttachments = EMAIL.Remove_AttachmentsFromEmail(oEmailFilePath, "_excl_attachments") Dim oEmailFilePathWithoutAttachments = EMAIL.Remove_AttachmentsFromEmail(pEmailFilePath, "_excl_attachments")
TEMP_FILES.Add(oEmailFilePathWithoutAttachments) TEMP_FILES.Add(oEmailFilePathWithoutAttachments)
If Insert_GI_File(oEmailFilePathWithoutAttachments, oMessageOnlyMarker) = True Then If Insert_GI_File(oEmailFilePathWithoutAttachments, oMessageOnlyMarker) = True Then
oSuccess = True oSuccess = True
Dim oAttachments As List(Of String) = EMAIL.Save_AttachmentsToDisk(oEmailFilePath) Dim oAttachments As List(Of String) = EMAIL.Save_AttachmentsToDisk(pEmailFilePath)
LOGGER.Debug("Saved [{0}] attachments to disk.", oAttachments.Count) LOGGER.Debug("Saved [{0}] attachments to disk.", oAttachments.Count)
@@ -108,91 +105,91 @@ Public Class ClassFilehandle
End Try End Try
End Function End Function
Private Shared Function Email_Decay(msgname As String, Optional FW As Boolean = False) 'Private Shared Function Email_Decay(msgname As String, Optional FW As Boolean = False)
Try ' Try
Dim msgonly As String = "|MSGONLY|" ' Dim msgonly As String = "|MSGONLY|"
Dim ATT_EXTR As String = "|ATTMNTEXTRACTED|" ' Dim ATT_EXTR As String = "|ATTMNTEXTRACTED|"
If FW = True Then ' If FW = True Then
msgonly = "|FW_MSGONLY|" ' msgonly = "|FW_MSGONLY|"
ATT_EXTR = "|FW_ATTMNTEXTRACTED|" ' ATT_EXTR = "|FW_ATTMNTEXTRACTED|"
End If ' End If
Dim erfolgreich As Boolean = False ' Dim erfolgreich As Boolean = False
Dim msg As New Msg.Message(msgname) ' Dim msg As New MSG.Message(msgname)
If msg.InternetMessageId IsNot Nothing Then ' If msg.InternetMessageId IsNot Nothing Then
CURRENT_MESSAGEID = msg.InternetMessageId ' CURRENT_MESSAGEID = msg.InternetMessageId
Else ' Else
LOGGER.Info("Es konnte keine Message-ID gelesen werden. Eine GUID wird erzeugt!") ' LOGGER.Info("Es konnte keine Message-ID gelesen werden. Eine GUID wird erzeugt!")
Dim sGUID As String ' Dim sGUID As String
sGUID = System.Guid.NewGuid.ToString() ' sGUID = System.Guid.NewGuid.ToString()
CURRENT_MESSAGEID = sGUID ' CURRENT_MESSAGEID = sGUID
End If ' End If
'Nur die MSGDatei ablegen ' 'Nur die MSGDatei ablegen
Dim tempfile As String = Path.Combine(Path.GetTempPath, Path.GetFileNameWithoutExtension(msgname) & "_excl_att.msg") ' Dim tempfile As String = Path.Combine(Path.GetTempPath, Path.GetFileNameWithoutExtension(msgname) & "_excl_att.msg")
If File.Exists(tempfile) Then ' If File.Exists(tempfile) Then
File.Delete(tempfile) ' File.Delete(tempfile)
End If ' End If
Dim _msgEXAtt As New Msg.Message(msgname) ' Dim _msgEXAtt As New Msg.Message(msgname)
_msgEXAtt.Attachments.Clear() ' _msgEXAtt.Attachments.Clear()
_msgEXAtt.Save(tempfile) ' _msgEXAtt.Save(tempfile)
'Datei in Array zum Templöschen speichern ' 'Datei in Array zum Templöschen speichern
TEMP_FILES.Add(tempfile) ' TEMP_FILES.Add(tempfile)
If Insert_GI_File(tempfile, msgonly) = True Then ' If Insert_GI_File(tempfile, msgonly) = True Then
erfolgreich = True ' erfolgreich = True
'Hier nun die Anhänge herauslösen ' 'Hier nun die Anhänge herauslösen
Dim _msg As New Msg.Message(msgname) ' Dim _msg As New Msg.Message(msgname)
Dim i1 As Integer = 1 ' Dim i1 As Integer = 1
LOGGER.Info(">> Anzahl der Attachments: " & _msg.Attachments.Count) ' LOGGER.Info(">> Anzahl der Attachments: " & _msg.Attachments.Count)
For Each attachment As Independentsoft.Msg.Attachment In _msg.Attachments ' For Each attachment As Independentsoft.Msg.Attachment In _msg.Attachments
If erfolgreich = False Then ' If erfolgreich = False Then
Exit For ' Exit For
End If ' End If
Dim attachment_name As String ' Dim attachment_name As String
If attachment.LongFileName Is Nothing Then ' If attachment.LongFileName Is Nothing Then
attachment_name = attachment.DisplayName ' attachment_name = attachment.DisplayName
Else ' Else
attachment_name = attachment.LongFileName ' attachment_name = attachment.LongFileName
End If ' End If
If attachment.EmbeddedMessage IsNot Nothing Then ' If attachment.EmbeddedMessage IsNot Nothing Then
attachment_name = Utils.RemoveInvalidCharacters(attachment_name) ' attachment_name = Utils.RemoveInvalidCharacters(attachment_name)
tempfile = Path.Combine(Path.GetTempPath, attachment_name & ".msg") ' tempfile = Path.Combine(Path.GetTempPath, attachment_name & ".msg")
tempfile = ClassFilehandle.Versionierung_Datei(tempfile) ' tempfile = ClassFilehandle.Versionierung_Datei(tempfile)
If tempfile <> String.Empty Then ' If tempfile <> String.Empty Then
Dim oMessage = attachment.EmbeddedMessage ' Dim oMessage = attachment.EmbeddedMessage
oMessage.IsEmbedded = False ' oMessage.IsEmbedded = False
oMessage.Save(tempfile) ' oMessage.Save(tempfile)
TEMP_FILES.Add(tempfile) ' TEMP_FILES.Add(tempfile)
LOGGER.Info(">> Attachment (" & i1 & "):" & tempfile) ' LOGGER.Info(">> Attachment (" & i1 & "):" & tempfile)
erfolgreich = Insert_GI_File(tempfile, ATT_EXTR) ' erfolgreich = Insert_GI_File(tempfile, ATT_EXTR)
i1 += 1 ' i1 += 1
End If ' End If
ElseIf Not attachment_name.Contains("inline") Then ' ElseIf Not attachment_name.Contains("inline") Then
'Sonderzeichen entfernen ' 'Sonderzeichen entfernen
attachment_name = Utils.RemoveInvalidCharacters(attachment_name) ' attachment_name = Utils.RemoveInvalidCharacters(attachment_name)
tempfile = Path.Combine(Path.GetTempPath, attachment_name) ' tempfile = Path.Combine(Path.GetTempPath, attachment_name)
tempfile = ClassFilehandle.Versionierung_Datei(tempfile) ' tempfile = ClassFilehandle.Versionierung_Datei(tempfile)
If tempfile <> "" Then ' If tempfile <> "" Then
attachment.Save(tempfile) ' attachment.Save(tempfile)
'Datei in Array zum Templöschen speichern ' 'Datei in Array zum Templöschen speichern
TEMP_FILES.Add(tempfile) ' TEMP_FILES.Add(tempfile)
LOGGER.Info(">> Attachment (" & i1 & "):" & tempfile) ' LOGGER.Info(">> Attachment (" & i1 & "):" & tempfile)
'nun der Insert des Anhanges ' 'nun der Insert des Anhanges
erfolgreich = Insert_GI_File(tempfile, ATT_EXTR) ' erfolgreich = Insert_GI_File(tempfile, ATT_EXTR)
i1 += 1 ' i1 += 1
End If ' End If
End If ' End If
Next ' Next
End If ' End If
Return erfolgreich ' Return erfolgreich
Catch ex As Exception ' Catch ex As Exception
MsgBox("Error in Email_Decay: " & ex.Message, MsgBoxStyle.Critical) ' MsgBox("Error in Email_Decay: " & ex.Message, MsgBoxStyle.Critical)
End Try ' End Try
End Function 'End Function
Private Shared Function Insert_GI_File(filename As String, handleType As String) Private Shared Function Insert_GI_File(filename As String, handleType As String)
Try Try
@@ -201,7 +198,7 @@ Public Class ClassFilehandle
Dim oHash As String = String.Empty Dim oHash As String = String.Empty
If File.Exists(filename) Then If File.Exists(filename) Then
If filename.ToUpper.EndsWith(".MSG") And (handleType = "|OUTLOOK_MESSAGE|" Or handleType = "|MSGONLY|") Then If (filename.ToUpper.EndsWith(".MSG") Or filename.ToUpper.EndsWith(".EML")) And (handleType = "|OUTLOOK_MESSAGE|" Or handleType = "|MSGONLY|") Then
oHash = FILESYSTEM.GetChecksumFromString(filename) oHash = FILESYSTEM.GetChecksumFromString(filename)
Else Else
oHash = FILESYSTEM.GetChecksum(filename) oHash = FILESYSTEM.GetChecksum(filename)

View File

@@ -1,5 +1,4 @@
Imports System.IO Imports System.IO
Imports Independentsoft
Imports System.Threading Imports System.Threading
Public Class ClassFolderWatcher Public Class ClassFolderWatcher

View File

@@ -1,10 +1,10 @@
Imports System.ComponentModel Imports System.ComponentModel
Imports DLLLicenseManager
Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Config Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Windream Imports DigitalData.Modules.Windream
Imports DigitalData.Modules.Filesystem Imports DigitalData.Modules.Filesystem
Imports DigitalData.Modules.Messaging Imports DigitalData.Modules.Messaging
Imports DLLLicenseManager
Public Class ClassInit Public Class ClassInit
Public _lizenzManager As ClassLicenseManager Public _lizenzManager As ClassLicenseManager

View File

@@ -189,10 +189,6 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>P:\Visual Studio Projekte\Bibliotheken\DLLLicenseManager.dll</HintPath> <HintPath>P:\Visual Studio Projekte\Bibliotheken\DLLLicenseManager.dll</HintPath>
</Reference> </Reference>
<Reference Include="Independentsoft.Msg, Version=2.0.570.21482, Culture=neutral, PublicKeyToken=76be97fe952f1ec7, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>P:\Visual Studio Projekte\Bibliotheken\MSG .NET\Bin\22_11_19\Independentsoft.Msg.dll</HintPath>
</Reference>
<Reference Include="Interop.WINDREAMLib"> <Reference Include="Interop.WINDREAMLib">
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll</HintPath> <HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes> <EmbedInteropTypes>False</EmbedInteropTypes>
@@ -780,6 +776,9 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="globe_handdrawn.ico" /> <Content Include="globe_handdrawn.ico" />
<Content Include="MailLicense.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Resources\DD_Icons_ICO_GLOBIX_1.ico" /> <Content Include="Resources\DD_Icons_ICO_GLOBIX_1.ico" />
<None Include="Resources\itemtypechecked.svg" /> <None Include="Resources\itemtypechecked.svg" />
<None Include="Resources\trackingchanges_next.svg" /> <None Include="Resources\trackingchanges_next.svg" />

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<License>
<Id>4dc5ef40-f1a9-468b-994c-b7ed600ad878</Id>
<ProductName>Mail.dll</ProductName>
<SubscriptionUntil>2022-07-29</SubscriptionUntil>
<RegisteredTo>Digital Data GmbH</RegisteredTo>
<LicenseType>single developer</LicenseType>
<BuyerName>Digital Data GmbH</BuyerName>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>75MRtl4ipYelIZYlpT8O7QDX9Zc=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>Raxfkz6DfQVs/sMvH+F2nH0eHXD8FoUFSdP3t7AgBUdpABJQx86srlyuMSEhXPlc1THCqPouEVob4RsWnd9OXvTiPPSOUSK9zuNG6uz93KLAhpSD5PraAgBCF4jwZArlAp7aCNfZpHqQ3w6TRHS+CfravUU0AHHG3MZ1ZcRkGuo=</SignatureValue>
</Signature>
</License>

View File

@@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben: ' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.4.2.1")> <Assembly: AssemblyVersion("2.4.2.2")>
<Assembly: AssemblyFileVersion("1.0.0.0")> <Assembly: AssemblyFileVersion("1.0.0.0")>
<Assembly: NeutralResourcesLanguageAttribute("")> <Assembly: NeutralResourcesLanguageAttribute("")>

View File

@@ -516,11 +516,4 @@ Public Class frmConfig_Basic
' Navigate to a URL. ' Navigate to a URL.
System.Diagnostics.Process.Start("http://www.didalog.de/Support") System.Diagnostics.Process.Start("http://www.didalog.de/Support")
End Sub End Sub
'Private Sub chkdelete_origin_CheckedChanged(sender As Object, e As EventArgs) Handles chkdelete_origin.CheckedChanged
' If CURR_DELETE_ORIGIN <> chkdelete_origin.Checked Then
' CURR_DELETE_ORIGIN = chkdelete_origin.Checked
' SaveConfigValue("Delete_OriginFile", CURR_DELETE_ORIGIN)
' End If
'End Sub
End Class End Class

View File

@@ -1,6 +1,5 @@
Imports System.IO Imports System.IO
Imports System.Text.RegularExpressions Imports System.Text.RegularExpressions
Imports Independentsoft
Imports System.Text Imports System.Text
Imports System.Security.AccessControl Imports System.Security.AccessControl
Imports System.Security.Principal Imports System.Security.Principal
@@ -313,17 +312,17 @@ Public Class frmIndex
'#End Region '#End Region
'#Region "+++++ Funktionen bei OK - schliessen ++++++" '#Region "+++++ Funktionen bei OK - schliessen ++++++"
Function CheckWrite_IndexeMan(dokartid As Integer) Function CheckWrite_IndexeMan(oDocumentTypeId As Integer)
'#### Zuerst manuelle Werte indexieren #### '#### Zuerst manuelle Werte indexieren ####
Try Try
_Logger.Info("In CheckWrite_IndexeMan") _Logger.Info("In CheckWrite_IndexeMan")
Dim result As Boolean = False Dim oResult As Boolean = False
For Each oControl As Control In Me.pnlIndex.Controls For Each oControl As Control In Me.pnlIndex.Controls
' MsgBox(ctrl.Name) ' MsgBox(ctrl.Name)
If oControl.Name.StartsWith("txt") Then If oControl.Name.StartsWith("txt") Then
Dim box As DevExpress.XtraEditors.TextEdit = oControl Dim box As DevExpress.XtraEditors.TextEdit = oControl
If box.Text = "" Then If box.Text = "" Then
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & dokartid & " AND NAME = '" & Replace(box.Name, "txt", "") & "'", MyConnectionString, True) Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & oDocumentTypeId & " AND NAME = '" & Replace(box.Name, "txt", "") & "'", MyConnectionString, True)
If optional_index = False Then If optional_index = False Then
If USER_LANGUAGE = LANG_DE Then If USER_LANGUAGE = LANG_DE Then
@@ -336,7 +335,7 @@ Public Class frmIndex
Return False Return False
Else Else
Indexwert_Postprocessing(Replace(box.Name, "txt", ""), "") Indexwert_Postprocessing(Replace(box.Name, "txt", ""), "")
result = True oResult = True
End If End If
Else Else
If Indexwert_checkValueDB(Replace(box.Name, "txt", ""), box.Text) = False Then If Indexwert_checkValueDB(Replace(box.Name, "txt", ""), box.Text) = False Then
@@ -356,19 +355,19 @@ Public Class frmIndex
Return False Return False
Else Else
Indexwert_Postprocessing(Replace(box.Name, "txt", ""), box.Text) Indexwert_Postprocessing(Replace(box.Name, "txt", ""), box.Text)
result = True oResult = True
End If End If
End If End If
End If End If
If oControl.Name.StartsWith("cmbMulti") Then If oControl.Name.StartsWith("cmbMulti") Then
Dim oLookup = DirectCast(oControl, DigitalData.Controls.LookupGrid.LookupControl3) Dim oLookup = DirectCast(oControl, DigitalData.Controls.LookupGrid.LookupControl3)
Dim values As List(Of String) = oLookup.Properties.SelectedValues Dim oValues As List(Of String) = oLookup.Properties.SelectedValues
If values.Count = 0 Then If oValues.Count = 0 Then
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & dokartid & " AND NAME = '" & Replace(oLookup.Name, "cmbMulti", "") & "'", MyConnectionString, True) Dim oIsOptionalIndex As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & oDocumentTypeId & " AND NAME = '" & Replace(oLookup.Name, "cmbMulti", "") & "'", MyConnectionString, True)
If optional_index = False Then If oIsOptionalIndex = False Then
If USER_LANGUAGE = LANG_DE Then If USER_LANGUAGE = LANG_DE Then
MsgBox(TEXT_MISSING_INPUT_DE, MsgBoxStyle.Exclamation, Text) MsgBox(TEXT_MISSING_INPUT_DE, MsgBoxStyle.Exclamation, Text)
Else Else
@@ -379,18 +378,18 @@ Public Class frmIndex
Return False Return False
Else Else
Indexwert_Postprocessing(Replace(oLookup.Name, "cmbMulti", ""), "") Indexwert_Postprocessing(Replace(oLookup.Name, "cmbMulti", ""), "")
result = True oResult = True
End If End If
Else Else
Dim vectorValue = String.Join(ClassConstants.VECTORSEPARATOR, values) Dim vectorValue = String.Join(ClassConstants.VECTORSEPARATOR, oValues)
Indexwert_Postprocessing(Replace(oLookup.Name, "cmbMulti", ""), vectorValue) Indexwert_Postprocessing(Replace(oLookup.Name, "cmbMulti", ""), vectorValue)
result = True oResult = True
End If End If
ElseIf oControl.Name.StartsWith("cmbSingle") Then ElseIf oControl.Name.StartsWith("cmbSingle") Then
Dim cmbSingle As TextBox = oControl Dim cmbSingle As TextBox = oControl
If cmbSingle.Text = "" Then If cmbSingle.Text = "" Then
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & dokartid & " AND NAME = '" & Replace(cmbSingle.Name, "cmbSingle", "") & "'", MyConnectionString, True) Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & oDocumentTypeId & " AND NAME = '" & Replace(cmbSingle.Name, "cmbSingle", "") & "'", MyConnectionString, True)
If optional_index = False Then If optional_index = False Then
If USER_LANGUAGE = LANG_DE Then If USER_LANGUAGE = LANG_DE Then
@@ -402,16 +401,16 @@ Public Class frmIndex
Return False Return False
Else Else
Indexwert_Postprocessing(Replace(cmbSingle.Name, "cmbSingle", ""), "") Indexwert_Postprocessing(Replace(cmbSingle.Name, "cmbSingle", ""), "")
result = True oResult = True
End If End If
Else Else
Indexwert_Postprocessing(Replace(cmbSingle.Name, "cmbSingle", ""), cmbSingle.Text) Indexwert_Postprocessing(Replace(cmbSingle.Name, "cmbSingle", ""), cmbSingle.Text)
result = True oResult = True
End If End If
ElseIf oControl.Name.StartsWith("cmb") Then ElseIf oControl.Name.StartsWith("cmb") Then
Dim cmb As ComboBox = oControl Dim cmb As ComboBox = oControl
If cmb.Text = "" Then If cmb.Text = "" Then
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & dokartid & " AND NAME = '" & Replace(cmb.Name, "cmb", "") & "'", MyConnectionString, True) Dim optional_index As Boolean = ClassDatabase.Execute_Scalar("SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = " & oDocumentTypeId & " AND NAME = '" & Replace(cmb.Name, "cmb", "") & "'", MyConnectionString, True)
If optional_index = False Then If optional_index = False Then
If USER_LANGUAGE = LANG_DE Then If USER_LANGUAGE = LANG_DE Then
MsgBox(TEXT_MISSING_INPUT_DE, MsgBoxStyle.Exclamation, Text) MsgBox(TEXT_MISSING_INPUT_DE, MsgBoxStyle.Exclamation, Text)
@@ -422,11 +421,11 @@ Public Class frmIndex
Return False Return False
Else Else
Indexwert_Postprocessing(Replace(cmb.Name, "cmb", ""), "") Indexwert_Postprocessing(Replace(cmb.Name, "cmb", ""), "")
result = True oResult = True
End If End If
Else Else
Indexwert_Postprocessing(Replace(cmb.Name, "cmb", ""), cmb.Text) Indexwert_Postprocessing(Replace(cmb.Name, "cmb", ""), cmb.Text)
result = True oResult = True
End If End If
End If End If
If oControl.Name.StartsWith("dtp") Then If oControl.Name.StartsWith("dtp") Then
@@ -434,7 +433,7 @@ Public Class frmIndex
Dim oIndexName As String = Replace(dtp.Name, "dtp", "") Dim oIndexName As String = Replace(dtp.Name, "dtp", "")
If dtp.Text = String.Empty Then If dtp.Text = String.Empty Then
Dim optional_index As Boolean = ClassDatabase.Execute_Scalar($"SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = {dokartid} AND NAME = '{oIndexName}'", MyConnectionString, True) Dim optional_index As Boolean = ClassDatabase.Execute_Scalar($"SELECT OPTIONAL FROM TBDD_INDEX_MAN WHERE DOK_ID = {oDocumentTypeId} AND NAME = '{oIndexName}'", MyConnectionString, True)
If optional_index = False Then If optional_index = False Then
If USER_LANGUAGE = LANG_DE Then If USER_LANGUAGE = LANG_DE Then
@@ -446,22 +445,22 @@ Public Class frmIndex
Return False Return False
Else Else
Indexwert_Postprocessing(oIndexName, "") Indexwert_Postprocessing(oIndexName, "")
result = True oResult = True
End If End If
Else Else
Indexwert_Postprocessing(Replace(dtp.Name, "dtp", ""), dtp.Text) Indexwert_Postprocessing(Replace(dtp.Name, "dtp", ""), dtp.Text)
result = True oResult = True
End If End If
End If End If
If oControl.Name.StartsWith("chk") Then If oControl.Name.StartsWith("chk") Then
Dim chk As CheckBox = oControl Dim chk As CheckBox = oControl
Indexwert_Postprocessing(Replace(chk.Name, "chk", ""), chk.Checked) Indexwert_Postprocessing(Replace(chk.Name, "chk", ""), chk.Checked)
result = True oResult = True
End If End If
If TypeOf (oControl) Is Button Then If TypeOf (oControl) Is Button Then
Continue For Continue For
End If End If
If oControl.Name.StartsWith("lbl") = False And result = False Then If oControl.Name.StartsWith("lbl") = False And oResult = False Then
_Logger.Info(TEXT_CHECK_MANUAL_INDEXES_EN) _Logger.Info(TEXT_CHECK_MANUAL_INDEXES_EN)
Return False Return False
End If End If
@@ -871,8 +870,7 @@ Public Class frmIndex
Private Function SetEmailIndicies(pIndexAttachment As Boolean) As Boolean Private Function SetEmailIndicies(pIndexAttachment As Boolean) As Boolean
Try Try
Dim oMsgFilePath As String = Path.Combine("\\windream\objects", CURRENT_NEWFILENAME) Dim oMsgFilePath As String = Path.Combine("\\windream\objects", CURRENT_NEWFILENAME)
Dim oEmlFilePath As String = EMAIL.Convert_MsgToEml(oMsgFilePath) Dim oMail As IMail = EMAIL.Load_Email(oMsgFilePath)
Dim oMail As IMail = EMAIL.Load_Email(oEmlFilePath)
Dim oSQL As String = $"SELECT * FROM TBGI_OBJECTTYPE_EMAIL_INDEX WHERE OBJECTTYPE = '{CURR_DOKART_OBJECTTYPE}'" Dim oSQL As String = $"SELECT * FROM TBGI_OBJECTTYPE_EMAIL_INDEX WHERE OBJECTTYPE = '{CURR_DOKART_OBJECTTYPE}'"
Dim oTable As DataTable = ClassDatabase.Return_Datatable(oSQL) Dim oTable As DataTable = ClassDatabase.Return_Datatable(oSQL)
@@ -893,8 +891,8 @@ Public Class frmIndex
End If End If
Dim oMessageId As String = oMail.MessageID Dim oMessageId As String = oMail.MessageID
Dim oMessageFrom As String = oMail.From.First?.Address Dim oMessageFrom As String = EMAIL.Get_MessageSender(oMail)
Dim oMessageTo As String = DirectCast(oMail.To.First, MailBox)?.Address Dim oMessageTo As String = EMAIL.Get_MessageReceiver(oMail)
Dim oSubject As String = oMail.Subject Dim oSubject As String = oMail.Subject
Dim oDateIn As Date = oMail.Date Dim oDateIn As Date = oMail.Date
@@ -913,18 +911,29 @@ Public Class frmIndex
For Each oIndex In oIndexNames For Each oIndex In oIndexNames
Try Try
If oIndex.Value Is Nothing OrElse oIndex.Value = String.Empty Then If oIndex.Value Is Nothing Then
LOGGER.Warn("Value for Index [{0}] was empty. Skipping.", oIndex.Key)
Return False Return False
End If
If TypeOf oIndex.Value Is String AndAlso oIndex.Value = String.Empty Then
LOGGER.Warn("Value for Index [{0}] was empty. Skipping.", oIndex.Key)
Return False
End If End If
Dim oIndexingSuccessful = WriteIndex2File(oRow.Item(oIndex.Key), oIndex.Value) Dim oIndexingSuccessful = WriteIndex2File(oRow.Item(oIndex.Key), oIndex.Value)
'Die aktuelle Message-ID zwischenspeichern 'Die aktuelle Message-ID zwischenspeichern
CURRENT_MESSAGEID = oMessageId CURRENT_MESSAGEID = oMessageId
If oIndexingSuccessful = False Then If oIndexingSuccessful = False Then
MsgBox("Error in SetEmailIndices-EmailID - See log", MsgBoxStyle.Critical) MsgBox($"Error while Indexing Email at Index [{oIndex.Key}]", MsgBoxStyle.Critical)
Return False Return False
End If End If
Catch ex As Exception Catch ex As Exception
LOGGER.Warn("Error while Indexing Email at Index [{0}]", oIndex.Key)
LOGGER.Error(ex) LOGGER.Error(ex)
Return False Return False
End Try End Try
@@ -937,383 +946,384 @@ Public Class frmIndex
End Try End Try
End Function End Function
Private Function SetEmailIndicesOld() 'Private Function SetEmailIndicesOld()
Dim indexierung_erfolgreich As Boolean = False ' Dim indexierung_erfolgreich As Boolean = False
Dim _step As String = "1" ' Dim _step As String = "1"
Try ' Try
Dim oTempPath As String = Path.Combine("\\windream\objects", CURRENT_NEWFILENAME) ' Dim oTempPath As String = Path.Combine("\\windream\objects", CURRENT_NEWFILENAME)
Dim msg As Msg.Message = New Msg.Message(oTempPath) ' Dim msg As Msg.Message = New Msg.Message(oTempPath)
Dim msgDisplayTo = msg.DisplayTo ' Dim msgDisplayTo = msg.DisplayTo
Dim msgInternetAccountName = msg.InternetAccountName ' Dim msgInternetAccountName = msg.InternetAccountName
If LogErrorsOnly = False Then ' If LogErrorsOnly = False Then
_Logger.Info("") ' _Logger.Info("")
_Logger.Info("msgInternetAccountName: " & msgInternetAccountName) ' _Logger.Info("msgInternetAccountName: " & msgInternetAccountName)
_Logger.Info("SenderName: " & msg.SenderName) ' _Logger.Info("SenderName: " & msg.SenderName)
_Logger.Info("SenderEmailAddress: " & msg.SenderEmailAddress) ' _Logger.Info("SenderEmailAddress: " & msg.SenderEmailAddress)
_Logger.Info("ReceivedByName: " & msg.ReceivedByName) ' _Logger.Info("ReceivedByName: " & msg.ReceivedByName)
_Logger.Info("ReceivedByEmailAddress: " & msg.ReceivedByEmailAddress) ' _Logger.Info("ReceivedByEmailAddress: " & msg.ReceivedByEmailAddress)
_Logger.Info("") ' _Logger.Info("")
End If ' End If
_step = "2" ' _step = "2"
'Console.WriteLine("Subject: " + msg.Subject) ' 'Console.WriteLine("Subject: " + msg.Subject)
'Console.WriteLine("MessageDeliveryTime:" & msg.MessageDeliveryTime) ' 'Console.WriteLine("MessageDeliveryTime:" & msg.MessageDeliveryTime)
'Console.WriteLine("SenderName: " + msg.SenderName) ' 'Console.WriteLine("SenderName: " + msg.SenderName)
'Console.WriteLine("SenderEmailAddress: " + msg.SenderEmailAddress) ' 'Console.WriteLine("SenderEmailAddress: " + msg.SenderEmailAddress)
'Console.WriteLine("ReceivedByName: " + msg.ReceivedByName) ' 'Console.WriteLine("ReceivedByName: " + msg.ReceivedByName)
'Console.WriteLine("ReceivedByEmailAddress: " + msg.ReceivedByEmailAddress) ' 'Console.WriteLine("ReceivedByEmailAddress: " + msg.ReceivedByEmailAddress)
'Console.WriteLine("DisplayTo: " + msg.DisplayTo) ' 'Console.WriteLine("DisplayTo: " + msg.DisplayTo)
'Console.WriteLine("DisplayCc: " + msg.DisplayCc) ' 'Console.WriteLine("DisplayCc: " + msg.DisplayCc)
'Console.WriteLine("Body: " + msg.Body) ' 'Console.WriteLine("Body: " + msg.Body)
'Console.WriteLine("-----------------------------------------------------------------------") ' 'Console.WriteLine("-----------------------------------------------------------------------")
'Console.WriteLine("BodyHtmlText: " + msg.BodyHtmlText) ' 'Console.WriteLine("BodyHtmlText: " + msg.BodyHtmlText)
Dim fromPattern As String = "" ' Dim fromPattern As String = ""
Dim toPattern As String = "" ' Dim toPattern As String = ""
Dim messageIDPattern As String = "" ' Dim messageIDPattern As String = ""
Dim finalize_pattern As String = "" ' Dim finalize_pattern As String = ""
' Email Header auslesen ' ' Email Header auslesen
Dim headers As String = ClassEmailHeaderExtractor.getMessageHeaders(msg) ' Dim headers As String = ClassEmailHeaderExtractor.getMessageHeaders(msg)
For Each rowregex As DataRow In CURRENT_DT_REGEX.Rows ' For Each rowregex As DataRow In CURRENT_DT_REGEX.Rows
If rowregex.Item("FUNCTION_NAME") = "FROM_EMAIL_HEADER" Then ' If rowregex.Item("FUNCTION_NAME") = "FROM_EMAIL_HEADER" Then
fromPattern = rowregex.Item("REGEX") ' fromPattern = rowregex.Item("REGEX")
ElseIf rowregex.Item("FUNCTION_NAME") = "TO_EMAIL_HEADER" Then ' ElseIf rowregex.Item("FUNCTION_NAME") = "TO_EMAIL_HEADER" Then
toPattern = rowregex.Item("REGEX") ' toPattern = rowregex.Item("REGEX")
ElseIf rowregex.Item("FUNCTION_NAME") = "MESSAGE_ID" Then ' ElseIf rowregex.Item("FUNCTION_NAME") = "MESSAGE_ID" Then
messageIDPattern = rowregex.Item("REGEX") ' messageIDPattern = rowregex.Item("REGEX")
ElseIf rowregex.Item("FUNCTION_NAME") = "FINALIZE" Then ' ElseIf rowregex.Item("FUNCTION_NAME") = "FINALIZE" Then
finalize_pattern = rowregex.Item("REGEX") ' finalize_pattern = rowregex.Item("REGEX")
End If ' End If
Next ' Next
Dim DT As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBGI_OBJECTTYPE_EMAIL_INDEX WHERE OBJECTTYPE = '" & CURR_DOKART_OBJECTTYPE & "'") ' Dim DT As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBGI_OBJECTTYPE_EMAIL_INDEX WHERE OBJECTTYPE = '" & CURR_DOKART_OBJECTTYPE & "'")
If IsNothing(DT) Then ' If IsNothing(DT) Then
_Logger.Info("SELECT * FROM TBGI_OBJECTTYPE_EMAIL_INDEX WHERE OBJECTTYPE = '" & CURR_DOKART_OBJECTTYPE & "' RESULTED in NOTHING") ' _Logger.Info("SELECT * FROM TBGI_OBJECTTYPE_EMAIL_INDEX WHERE OBJECTTYPE = '" & CURR_DOKART_OBJECTTYPE & "' RESULTED in NOTHING")
Return False ' Return False
End If ' End If
If DT.Rows.Count = 1 Then ' If DT.Rows.Count = 1 Then
_step = "3" ' _step = "3"
CURRENT_MESSAGEDATE = "" ' CURRENT_MESSAGEDATE = ""
CURRENT_MESSAGESUBJECT = "" ' CURRENT_MESSAGESUBJECT = ""
'Message-ID nur auswerten wenn vorher nicht gestzt wurde! ' 'Message-ID nur auswerten wenn vorher nicht gestzt wurde!
If CURRENT_MESSAGEID = "" Then ' If CURRENT_MESSAGEID = "" Then
If Not msg.InternetMessageId Is Nothing Then ' If Not msg.InternetMessageId Is Nothing Then
indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_ID").ToString, msg.InternetMessageId) ' indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_ID").ToString, msg.InternetMessageId)
'Die aktuelle Message-ID zwischenspeichern ' 'Die aktuelle Message-ID zwischenspeichern
CURRENT_MESSAGEID = msg.InternetMessageId ' CURRENT_MESSAGEID = msg.InternetMessageId
If indexierung_erfolgreich = False Then ' If indexierung_erfolgreich = False Then
MsgBox("Error in SetEmailIndices-EmailID - See log", MsgBoxStyle.Critical) ' MsgBox("Error in SetEmailIndices-EmailID - See log", MsgBoxStyle.Critical)
Return False ' Return False
End If ' End If
Else ' Else
If messageIDPattern = String.Empty Then ' If messageIDPattern = String.Empty Then
_Logger.Info("A messageID could not be read!") ' _Logger.Info("A messageID could not be read!")
Else ' Else
If Not IsNothing(headers) Then ' If Not IsNothing(headers) Then
CURRENT_MESSAGEID = ClassEmailHeaderExtractor.extractFromHeader(headers, messageIDPattern) ' CURRENT_MESSAGEID = ClassEmailHeaderExtractor.extractFromHeader(headers, messageIDPattern)
If IsNothing(CURRENT_MESSAGEID) Then ' If IsNothing(CURRENT_MESSAGEID) Then
CURRENT_MESSAGEID = "" ' CURRENT_MESSAGEID = ""
End If ' End If
Else ' Else
_Logger.Info("A messageID could not be read - messageheader nothing/messagIDpattern value!") ' _Logger.Info("A messageID could not be read - messageheader nothing/messagIDpattern value!")
End If ' End If
End If ' End If
End If ' End If
Else ' Else
indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_ID").ToString, CURRENT_MESSAGEID) ' indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_ID").ToString, CURRENT_MESSAGEID)
If indexierung_erfolgreich = False Then ' If indexierung_erfolgreich = False Then
MsgBox("Error in SetEmailIndices-EmailID - See log", MsgBoxStyle.Critical) ' MsgBox("Error in SetEmailIndices-EmailID - See log", MsgBoxStyle.Critical)
Return False ' Return False
End If ' End If
End If ' End If
_step = "4" ' _step = "4"
' Regular Expressions vorbereiten ' ' Regular Expressions vorbereiten
If fromPattern <> "" And toPattern <> "" Then ' If fromPattern <> "" And toPattern <> "" Then
_step = "4.1" ' _step = "4.1"
Dim FromRegexList As New List(Of Regex) ' Dim FromRegexList As New List(Of Regex)
Dim ToRegexList As New List(Of Regex) ' Dim ToRegexList As New List(Of Regex)
Dim fromRegex As New Regex(fromPattern, RegexOptions.IgnoreCase) ' Dim fromRegex As New Regex(fromPattern, RegexOptions.IgnoreCase)
Dim toRegex As New Regex(toPattern, RegexOptions.IgnoreCase) ' Dim toRegex As New Regex(toPattern, RegexOptions.IgnoreCase)
FromRegexList.Add(fromRegex) ' FromRegexList.Add(fromRegex)
ToRegexList.Add(toRegex) ' ToRegexList.Add(toRegex)
Dim emailFrom ' Dim emailFrom
Dim emailTo ' Dim emailTo
' Email Absender und Empfänger ' ' Email Absender und Empfänger
If headers Is Nothing Then ' If headers Is Nothing Then
_step = "4.2" ' _step = "4.2"
If IsNothing(msgDisplayTo) Then ' If IsNothing(msgDisplayTo) Then
_step = "4.3" ' _step = "4.3"
_Logger.Info("DisplayTo in email is nothing - default will be set") ' _Logger.Info("DisplayTo in email is nothing - default will be set")
emailTo = "NO RECIPIENT" ' emailTo = "NO RECIPIENT"
Else ' Else
_step = "4.4" ' _step = "4.4"
emailTo = msgDisplayTo.ToString.Replace("'", "") ' emailTo = msgDisplayTo.ToString.Replace("'", "")
End If ' End If
If IsNothing(msgInternetAccountName) Then ' If IsNothing(msgInternetAccountName) Then
_step = "4.5" ' _step = "4.5"
_Logger.Info("InternetAccountName in email is nothing - default will be set") ' _Logger.Info("InternetAccountName in email is nothing - default will be set")
emailFrom = "" ' emailFrom = ""
Else ' Else
_step = "4.6" ' _step = "4.6"
emailFrom = msgInternetAccountName.ToString.Replace("'", "") ' emailFrom = msgInternetAccountName.ToString.Replace("'", "")
End If ' End If
Else ' Else
_step = "5" ' _step = "5"
_Logger.Info("emailTo and From Extraction via messageheader.") ' _Logger.Info("emailTo and From Extraction via messageheader.")
emailFrom = ClassEmailHeaderExtractor.extractFromHeader(headers, fromPattern) 'FromRegexList) ' emailFrom = ClassEmailHeaderExtractor.extractFromHeader(headers, fromPattern) 'FromRegexList)
emailTo = ClassEmailHeaderExtractor.extractFromHeader(headers, toPattern) ' extractToAddress(headers, ToRegexList) ' emailTo = ClassEmailHeaderExtractor.extractFromHeader(headers, toPattern) ' extractToAddress(headers, ToRegexList)
'Handler für leere emailTo-Adresse ' 'Handler für leere emailTo-Adresse
If IsNothing(emailTo) Then ' If IsNothing(emailTo) Then
_step = "5.1" ' _step = "5.1"
_Logger.Info("emailTo couldn't be extracted from messageheader...") ' _Logger.Info("emailTo couldn't be extracted from messageheader...")
If (headers.Contains("exc") Or headers.Contains("exchange")) Then ' If (headers.Contains("exc") Or headers.Contains("exchange")) Then
_step = "5.2" ' _step = "5.2"
_Logger.Info("...try with LDAP-option") ' _Logger.Info("...try with LDAP-option")
Dim _email = GetUserEmailfromLDAP(msgDisplayTo) ' Dim _email = GetUserEmailfromLDAP(msgDisplayTo)
_step = "5.3" ' _step = "5.3"
If _email <> "" Then ' If _email <> "" Then
emailTo = _email ' emailTo = _email
Else ' Else
_Logger.Info(">> email-adress couldn't be read from LDAP with name '" & msgDisplayTo & "'") ' _Logger.Info(">> email-adress couldn't be read from LDAP with name '" & msgDisplayTo & "'")
MsgBox("Could't get 'emailto' from messageHeader and later on with LDAP-Option." & vbNewLine & "Please check the dropped email and Configuration of Email-Indexing!", MsgBoxStyle.Exclamation) ' MsgBox("Could't get 'emailto' from messageHeader and later on with LDAP-Option." & vbNewLine & "Please check the dropped email and Configuration of Email-Indexing!", MsgBoxStyle.Exclamation)
Return False ' Return False
End If ' End If
Else ' Else
_step = "5.4" ' _step = "5.4"
CURR_MISSING_PATTERN_NAME = "Email To" ' CURR_MISSING_PATTERN_NAME = "Email To"
CURR_MISSING_SEARCH_STRING = headers ' CURR_MISSING_SEARCH_STRING = headers
CURR_MISSING_MANUAL_VALUE = String.Empty ' CURR_MISSING_MANUAL_VALUE = String.Empty
frmMissingInput.ShowDialog() ' frmMissingInput.ShowDialog()
_step = "5.4.1" ' _step = "5.4.1"
If CURR_MISSING_MANUAL_VALUE <> String.Empty Then ' If CURR_MISSING_MANUAL_VALUE <> String.Empty Then
_step = "5.4.2" ' _step = "5.4.2"
emailTo = CURR_MISSING_MANUAL_VALUE ' emailTo = CURR_MISSING_MANUAL_VALUE
Else ' Else
_step = "5.4.3" ' _step = "5.4.3"
_Logger.Info("no exchange patterns found in headers!") ' _Logger.Info("no exchange patterns found in headers!")
MsgBox("Could't get 'emailto' from messageHeader and exhange-Patterns weren't found." & vbNewLine & "Please check the dropped email and Configuration of Email-Indexing!", MsgBoxStyle.Exclamation) ' MsgBox("Could't get 'emailto' from messageHeader and exhange-Patterns weren't found." & vbNewLine & "Please check the dropped email and Configuration of Email-Indexing!", MsgBoxStyle.Exclamation)
Return False ' Return False
End If ' End If
End If ' End If
End If ' End If
_step = "6" ' _step = "6"
emailTo = ClassEmailHeaderExtractor.extractFromHeader(emailTo, finalize_pattern) ' emailTo = ClassEmailHeaderExtractor.extractFromHeader(emailTo, finalize_pattern)
emailFrom = ClassEmailHeaderExtractor.extractFromHeader(emailFrom, finalize_pattern) ' emailFrom = ClassEmailHeaderExtractor.extractFromHeader(emailFrom, finalize_pattern)
_step = "6.1" ' _step = "6.1"
If Not IsNothing(emailFrom) Then ' If Not IsNothing(emailFrom) Then
emailFrom = emailFrom.Replace("<", "") ' emailFrom = emailFrom.Replace("<", "")
emailFrom = emailFrom.Replace(">", "") ' emailFrom = emailFrom.Replace(">", "")
Else ' Else
_step = "6.1.x" ' _step = "6.1.x"
_Logger.Info("emailFrom is Nothing?!") ' _Logger.Info("emailFrom is Nothing?!")
End If ' End If
If Not IsNothing(emailTo) Then ' If Not IsNothing(emailTo) Then
_step = "6.1.1 " & emailTo.ToString ' _step = "6.1.1 " & emailTo.ToString
emailTo = emailTo.Replace("<", "") ' emailTo = emailTo.Replace("<", "")
emailTo = emailTo.Replace(">", "") ' emailTo = emailTo.Replace(">", "")
_step = "6.2" ' _step = "6.2"
Dim _duplicatesCheck As List(Of String) = New List(Of String) ' Dim _duplicatesCheck As List(Of String) = New List(Of String)
_duplicatesCheck = emailTo.ToString.Split(";").ToList ' _duplicatesCheck = emailTo.ToString.Split(";").ToList
' Filter distinct elements, and convert back into list. ' ' Filter distinct elements, and convert back into list.
Dim result As List(Of String) = _duplicatesCheck.Distinct().ToList ' Dim result As List(Of String) = _duplicatesCheck.Distinct().ToList
' Display result. ' ' Display result.
Dim i As Integer = 0 ' Dim i As Integer = 0
For Each element As String In result ' For Each element As String In result
If i = 0 Then ' If i = 0 Then
emailTo = element ' emailTo = element
Else ' Else
emailTo = emailTo & ";" & element ' emailTo = emailTo & ";" & element
End If ' End If
i += 1 ' i += 1
Next ' Next
Else ' Else
_step = "6.3" ' _step = "6.3"
_Logger.Info("emailTo is Nothing?!") ' _Logger.Info("emailTo is Nothing?!")
End If ' End If
_Logger.Info("Headers-Content: ") ' _Logger.Info("Headers-Content: ")
_Logger.Info(headers.ToString) ' _Logger.Info(headers.ToString)
End If ' End If
'Handler für leere emailFrom-Adresse ' 'Handler für leere emailFrom-Adresse
If IsNothing(emailFrom) Then ' If IsNothing(emailFrom) Then
_step = "7" ' _step = "7"
_Logger.Info("emailFrom couldn't be extracted from messageheader...") ' _Logger.Info("emailFrom couldn't be extracted from messageheader...")
If Not IsNothing(msg.SenderEmailAddress) Then ' If Not IsNothing(msg.SenderEmailAddress) Then
If msg.SenderEmailAddress <> String.Empty Then ' If msg.SenderEmailAddress <> String.Empty Then
_step = "7.1" ' _step = "7.1"
_Logger.Info("emailFrom via msg.SenderEmailAddress will be used instead!") ' _Logger.Info("emailFrom via msg.SenderEmailAddress will be used instead!")
emailFrom = msg.SenderEmailAddress.ToString.Replace("'", "") ' emailFrom = msg.SenderEmailAddress.ToString.Replace("'", "")
End If ' End If
End If ' End If
End If ' End If
If IsNothing(emailFrom) Or emailFrom = String.Empty Then ' If IsNothing(emailFrom) Or emailFrom = String.Empty Then
_step = "7.2" ' _step = "7.2"
CURR_MISSING_PATTERN_NAME = "Email From" ' CURR_MISSING_PATTERN_NAME = "Email From"
CURR_MISSING_SEARCH_STRING = emailFrom ' CURR_MISSING_SEARCH_STRING = emailFrom
CURR_MISSING_MANUAL_VALUE = String.Empty ' CURR_MISSING_MANUAL_VALUE = String.Empty
frmMissingInput.ShowDialog() ' frmMissingInput.ShowDialog()
If CURR_MISSING_MANUAL_VALUE <> String.Empty Then ' If CURR_MISSING_MANUAL_VALUE <> String.Empty Then
_step = "7.3" ' _step = "7.3"
emailFrom = CURR_MISSING_MANUAL_VALUE ' emailFrom = CURR_MISSING_MANUAL_VALUE
Else ' Else
MsgBox("Could't get 'emailfrom' from messageHeader." & vbNewLine & "Please check the dropped email and Configuration of Email-Indexing!", MsgBoxStyle.Exclamation) ' MsgBox("Could't get 'emailfrom' from messageHeader." & vbNewLine & "Please check the dropped email and Configuration of Email-Indexing!", MsgBoxStyle.Exclamation)
Return False ' Return False
End If ' End If
End If ' End If
_Logger.Info("emailFrom: " & emailFrom) ' _Logger.Info("emailFrom: " & emailFrom)
_Logger.Info("emailTo: " & emailTo) ' _Logger.Info("emailTo: " & emailTo)
'FROM ' 'FROM
If Not IsNothing(emailFrom) Then ' If Not IsNothing(emailFrom) Then
indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_FROM").ToString, emailFrom) ' indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_FROM").ToString, emailFrom)
If indexierung_erfolgreich = False Then ' If indexierung_erfolgreich = False Then
MsgBox("Error in SetEmailIndices [emailFrom] - See log", MsgBoxStyle.Critical) ' MsgBox("Error in SetEmailIndices [emailFrom] - See log", MsgBoxStyle.Critical)
Return False ' Return False
End If ' End If
Else ' Else
_Logger.Info("emailFrom is still Nothing?!") ' _Logger.Info("emailFrom is still Nothing?!")
_step = "7.4" ' _step = "7.4"
End If ' End If
'TO ' 'TO
If Not IsNothing(emailTo) Then ' If Not IsNothing(emailTo) Then
indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_TO").ToString, emailTo) ' indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_TO").ToString, emailTo)
If indexierung_erfolgreich = False Then ' If indexierung_erfolgreich = False Then
MsgBox("Error in SetEmailIndices [emailTo] - See log", MsgBoxStyle.Critical) ' MsgBox("Error in SetEmailIndices [emailTo] - See log", MsgBoxStyle.Critical)
Return False ' Return False
End If ' End If
Else ' Else
_Logger.Info("emailTo is still Nothing?!") ' _Logger.Info("emailTo is still Nothing?!")
_step = "7.5" ' _step = "7.5"
End If ' End If
' Dim subj As String = ClassFormFunctions.CleanInput(msg.Subject) ' ' Dim subj As String = ClassFormFunctions.CleanInput(msg.Subject)
Dim subj As String = msg.Subject ' Dim subj As String = msg.Subject
If IsNothing(subj) Or subj = "" Then ' If IsNothing(subj) Or subj = "" Then
_Logger.Info("msg subject is empty...DEFAULT will be set") ' _Logger.Info("msg subject is empty...DEFAULT will be set")
subj = "No subject" ' subj = "No subject"
MsgBox("Attention: Email was send without a subject - Default value 'No subject' will be used!", MsgBoxStyle.Exclamation) ' MsgBox("Attention: Email was send without a subject - Default value 'No subject' will be used!", MsgBoxStyle.Exclamation)
Else ' Else
subj = ClassHelper.encode_utf8(msg.Subject) ' subj = ClassHelper.encode_utf8(msg.Subject)
If IsNothing(subj) Then ' If IsNothing(subj) Then
subj = msg.Subject ' subj = msg.Subject
End If ' End If
End If ' End If
_Logger.Info("Now all email-items will be indexed!") ' _Logger.Info("Now all email-items will be indexed!")
_Logger.Info("subj: " & subj) ' _Logger.Info("subj: " & subj)
indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_SUBJECT").ToString, subj) ' indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_SUBJECT").ToString, subj)
CURRENT_MESSAGESUBJECT = subj ' CURRENT_MESSAGESUBJECT = subj
If indexierung_erfolgreich = False Then ' If indexierung_erfolgreich = False Then
MsgBox("Error in SetEmailIndices [Subject] - See log", MsgBoxStyle.Critical) ' MsgBox("Error in SetEmailIndices [Subject] - See log", MsgBoxStyle.Critical)
Return False ' Return False
End If ' End If
_Logger.Info("MessageDeliveryTime: " & msg.MessageDeliveryTime) ' _Logger.Info("MessageDeliveryTime: " & msg.MessageDeliveryTime)
indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_DATE_IN").ToString, msg.MessageDeliveryTime) ' indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_DATE_IN").ToString, msg.MessageDeliveryTime)
CURRENT_MESSAGEDATE = msg.MessageDeliveryTime ' CURRENT_MESSAGEDATE = msg.MessageDeliveryTime
If indexierung_erfolgreich = False Then ' If indexierung_erfolgreich = False Then
MsgBox("Error in SetEmailIndices [Datein] - See log", MsgBoxStyle.Critical) ' MsgBox("Error in SetEmailIndices [Datein] - See log", MsgBoxStyle.Critical)
Return False ' Return False
End If ' End If
Else ' Else
indexierung_erfolgreich = False ' indexierung_erfolgreich = False
End If ' End If
Return indexierung_erfolgreich ' Return indexierung_erfolgreich
End If ' End If
Catch ex As Exception ' Catch ex As Exception
ShowErrorMessage(ex, "SetEmailIndices") ' ShowErrorMessage(ex, "SetEmailIndices")
Return False ' Return False
End Try ' End Try
End Function 'End Function
Public Function GetUserEmailfromLDAP(ByVal userName As String) As String
Dim domainName As String = Environment.UserDomainName '"PutYourDomainNameHere" '< Change this value to your actual domain name. For example: "yahoo" 'Public Function GetUserEmailfromLDAP(ByVal userName As String) As String
Dim dommain As String = "com" '<change this value to your actual domain region. For example: "com" as in "yahoo.com"
Dim path As String = String.Format("LDAP://CN=User,DC={0}", domainName) ' Dim domainName As String = Environment.UserDomainName '"PutYourDomainNameHere" '< Change this value to your actual domain name. For example: "yahoo"
Dim userEmail As String = String.Empty ' Dim dommain As String = "com" '<change this value to your actual domain region. For example: "com" as in "yahoo.com"
Using search As DirectorySearcher = New DirectorySearcher(path) ' Dim path As String = String.Format("LDAP://CN=User,DC={0}", domainName)
Dim result As SearchResult ' Dim userEmail As String = String.Empty
Try
search.Filter = "(SAMAccountName=" & userName & ")"
search.PropertiesToLoad.Add("mail")
result = search.FindOne()
Catch ex As Exception
_Logger.Error(ex)
search.Filter = ""
search.Filter = "(GivenName=" & userName & ")"
search.PropertiesToLoad.Add("mail")
End Try
Try ' Using search As DirectorySearcher = New DirectorySearcher(path)
result = search.FindOne() ' Dim result As SearchResult
If result IsNot Nothing Then userEmail = result.Properties("mail").ToString ' Try
Catch ex As Exception ' search.Filter = "(SAMAccountName=" & userName & ")"
_Logger.Info(">> Unexpected Error in GetUserEmail from LDAP: " & ex.Message) ' search.PropertiesToLoad.Add("mail")
_Logger.Error(ex) ' result = search.FindOne()
End Try ' Catch ex As Exception
End Using ' _Logger.Error(ex)
' search.Filter = ""
' search.Filter = "(GivenName=" & userName & ")"
' search.PropertiesToLoad.Add("mail")
' End Try
Return userEmail ' Try
' result = search.FindOne()
' If result IsNot Nothing Then userEmail = result.Properties("mail").ToString
' Catch ex As Exception
' _Logger.Info(">> Unexpected Error in GetUserEmail from LDAP: " & ex.Message)
' _Logger.Error(ex)
' End Try
' End Using
End Function ' Return userEmail
Private Function SetAttachmentIndices()
Dim indexierung_erfolgreich As Boolean = True
Try
Dim DT As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBGI_OBJECTTYPE_EMAIL_INDEX WHERE OBJECTTYPE = '" & CURR_DOKART_OBJECTTYPE & "'")
If DT.Rows.Count = 1 Then
If Not CURRENT_MESSAGEID Is Nothing Then 'End Function
If CURRENT_MESSAGEID <> "" Then 'Private Function SetAttachmentIndices()
indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_ID").ToString, CURRENT_MESSAGEID) ' Dim indexierung_erfolgreich As Boolean = True
If indexierung_erfolgreich = False Then ' Try
MsgBox("Error in SetAttachmentIndices MESSAGE-ID - See log", MsgBoxStyle.Critical) ' Dim DT As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBGI_OBJECTTYPE_EMAIL_INDEX WHERE OBJECTTYPE = '" & CURR_DOKART_OBJECTTYPE & "'")
Return False ' If DT.Rows.Count = 1 Then
End If
End If
End If
'Das Subject speichern
If CURRENT_MESSAGESUBJECT <> "" Then
indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_SUBJECT").ToString, CURRENT_MESSAGESUBJECT)
If indexierung_erfolgreich = False Then
MsgBox("Error in SetAttachmentIndices SUBJECT - See log", MsgBoxStyle.Critical)
Return False
End If
End If
'Das MesageDate speichern
If CURRENT_MESSAGEDATE <> "" Then
indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_DATE_IN").ToString, CURRENT_MESSAGEDATE)
If indexierung_erfolgreich = False Then
MsgBox("Error in SetAttachmentIndices DATE - See log", MsgBoxStyle.Critical)
Return False
End If
End If
'Kennzeichnen das es ein Anhang war!
indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_CHECK_ATTACHMENT").ToString, True)
If indexierung_erfolgreich = False Then
MsgBox("Error in SetAttachmentIndices ATTACHMENT Y/N - See log", MsgBoxStyle.Critical)
Return False
End If
Return indexierung_erfolgreich
End If
Catch ex As Exception
ShowErrorMessage(ex, "SetAttachmentIndices")
Return False
End Try
End Function ' If Not CURRENT_MESSAGEID Is Nothing Then
' If CURRENT_MESSAGEID <> "" Then
' indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_ID").ToString, CURRENT_MESSAGEID)
' If indexierung_erfolgreich = False Then
' MsgBox("Error in SetAttachmentIndices MESSAGE-ID - See log", MsgBoxStyle.Critical)
' Return False
' End If
' End If
' End If
' 'Das Subject speichern
' If CURRENT_MESSAGESUBJECT <> "" Then
' indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_SUBJECT").ToString, CURRENT_MESSAGESUBJECT)
' If indexierung_erfolgreich = False Then
' MsgBox("Error in SetAttachmentIndices SUBJECT - See log", MsgBoxStyle.Critical)
' Return False
' End If
' End If
' 'Das MesageDate speichern
' If CURRENT_MESSAGEDATE <> "" Then
' indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_EMAIL_DATE_IN").ToString, CURRENT_MESSAGEDATE)
' If indexierung_erfolgreich = False Then
' MsgBox("Error in SetAttachmentIndices DATE - See log", MsgBoxStyle.Critical)
' Return False
' End If
' End If
' 'Kennzeichnen das es ein Anhang war!
' indexierung_erfolgreich = WriteIndex2File(DT.Rows(0).Item("IDX_CHECK_ATTACHMENT").ToString, True)
' If indexierung_erfolgreich = False Then
' MsgBox("Error in SetAttachmentIndices ATTACHMENT Y/N - See log", MsgBoxStyle.Critical)
' Return False
' End If
' Return indexierung_erfolgreich
' End If
' Catch ex As Exception
' ShowErrorMessage(ex, "SetAttachmentIndices")
' Return False
' End Try
'End Function
Private Function SINGLEFILE_2_WINDREAM(_Objekttyp As String) As Boolean Private Function SINGLEFILE_2_WINDREAM(_Objekttyp As String) As Boolean
Try Try
@@ -1402,25 +1412,25 @@ Public Class frmIndex
Select Case CancelAttempts Select Case CancelAttempts
Case 0 Case 0
If USER_LANGUAGE = LANG_DE Then If USER_LANGUAGE = LANG_DE Then
MsgBox("Bitte indexieren Sie die Datei vollständig!" & vbNewLine & "(Abbruch 1 des Indexierungsvorgangs)", MsgBoxStyle.Information) MsgBox($"Bitte indexieren Sie die Datei vollständig!{vbNewLine}(Abbruch 1 des Indexierungsvorgangs)", MsgBoxStyle.Information)
Else Else
MsgBox("Please Index file completely" & vbNewLine & "(Abort 1 of Indexdialog)", MsgBoxStyle.Information) MsgBox($"Please Index file completely{vbNewLine}(Abort 1 of Indexdialog)", MsgBoxStyle.Information)
End If End If
CancelAttempts = CancelAttempts + 1 CancelAttempts = CancelAttempts + 1
e.Cancel = True e.Cancel = True
Case 1 Case 1
Dim result As MsgBoxResult Dim result As MsgBoxResult
If USER_LANGUAGE = LANG_DE Then If USER_LANGUAGE = LANG_DE Then
result = MessageBox.Show("Sie brechen nun zum zweiten Mal den Indexierungsvorgang ab!" & vbNewLine & "Wollen Sie die Indexierung aller Dateien abbrechen?", "Bestätigung erforderlich:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) result = MessageBox.Show($"Sie brechen nun zum zweiten Mal den Indexierungsvorgang ab!{vbNewLine}Wollen Sie die Indexierung aller Dateien abbrechen?", "Bestätigung erforderlich:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
Else Else
result = MessageBox.Show("You abort the indexdialog for the 2nd time!" & vbNewLine & "Do You want to abort indexing?", "Confirmation needed:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) result = MessageBox.Show($"You abort the indexdialog for the 2nd time!{vbNewLine}Do You want to abort indexing?", "Confirmation needed:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
End If End If
If result = MsgBoxResult.Yes Then If result = MsgBoxResult.Yes Then
Dim containsfw_file As Boolean = False Dim containsfw_file As Boolean = False
Try Try
ABORT_INDEXING = True ABORT_INDEXING = True
Dim sql As String = "SELECT * FROM TBGI_FILES_USER WHERE WORKED = 0 AND UPPER(USER@WORK) = UPPER('" & Environment.UserName & "')" Dim sql As String = $"SELECT * FROM TBGI_FILES_USER WHERE WORKED = 0 AND UPPER(USER@WORK) = UPPER('{Environment.UserName}')"
Dim DT As DataTable = ClassDatabase.Return_Datatable(sql, True) Dim DT As DataTable = ClassDatabase.Return_Datatable(sql, True)
Dim anz = DT.Rows.Count Dim anz = DT.Rows.Count
@@ -2225,7 +2235,7 @@ Public Class frmIndex
Return utf8Encoding.GetString(encodedString) Return utf8Encoding.GetString(encodedString)
End Function End Function
Private Function WORK_FILE() Private Function WORK_FILE() As Boolean
Try Try
Me.VWDDINDEX_MANTableAdapter.Fill(Me.MyDataset.VWDDINDEX_MAN, CURRENT_DOKART_ID) Me.VWDDINDEX_MANTableAdapter.Fill(Me.MyDataset.VWDDINDEX_MAN, CURRENT_DOKART_ID)
_Logger.Debug("Manuelle Indexe geladen") _Logger.Debug("Manuelle Indexe geladen")
@@ -2751,6 +2761,8 @@ Public Class frmIndex
End If End If
End If End If
EMAIL.Clear_TempFiles()
DocumentViewer1.CloseDocument() DocumentViewer1.CloseDocument()
DocumentViewer1.Done() DocumentViewer1.Done()

View File

@@ -1,6 +1,5 @@
Imports System.IO Imports System.IO
Imports Microsoft.Office.Interop Imports Microsoft.Office.Interop
Imports Independentsoft
Imports DLLLicenseManager Imports DLLLicenseManager
Imports System.Text Imports System.Text
Imports System.Globalization Imports System.Globalization

View File

@@ -119,6 +119,9 @@
<File Id="Windream" Name="DigitalData.Modules.Windream.dll" Source="DigitalData.Modules.Windream.dll" KeyPath="no" /> <File Id="Windream" Name="DigitalData.Modules.Windream.dll" Source="DigitalData.Modules.Windream.dll" KeyPath="no" />
<File Id="Windows" Name="DigitalData.Modules.Windows.dll" Source="DigitalData.Modules.Windows.dll" KeyPath="no" /> <File Id="Windows" Name="DigitalData.Modules.Windows.dll" Source="DigitalData.Modules.Windows.dll" KeyPath="no" />
<File Id="Language" Name="DigitalData.Modules.Language.dll" Source="DigitalData.Modules.Language.dll" KeyPath="no" /> <File Id="Language" Name="DigitalData.Modules.Language.dll" Source="DigitalData.Modules.Language.dll" KeyPath="no" />
<File Id="Messaging" Name="DigitalData.Modules.Messaging.dll" Source="DigitalData.Modules.Messaging.dll" KeyPath="no" />
<File Id="Messaging.License" Name="MailLicense.xml" Source="MailLicense.xml" KeyPath="no" />
</Component> </Component>
<Component Id="GDPictureLibs" Guid="9ea5ab43-58ff-4813-9a8b-f854784f0275"> <Component Id="GDPictureLibs" Guid="9ea5ab43-58ff-4813-9a8b-f854784f0275">