Compare commits

...

7 Commits

Author SHA1 Message Date
Jonathan Jenne
7e88092ded fix messageid again 2022-08-05 14:29:32 +02:00
Jonathan Jenne
255e7e1a79 EMLProfiler: Version 3.7.4 2022-08-05 12:37:02 +02:00
Jonathan Jenne
81a2831ab4 EMLProfiler: replace message id with guid when longer than 100 chars 2022-08-05 12:36:41 +02:00
Jonathan Jenne
413ac4ba52 EMLProfiler: Version 3.7.3 2022-08-05 11:34:03 +02:00
Jonathan Jenne
823386d304 fix wrong message id in history table 2022-08-05 11:33:13 +02:00
Jonathan Jenne
b2d9954ef8 EMLProfiler: Version 1.7.2 2022-08-04 13:40:35 +02:00
Jonathan Jenne
0744cdae03 EMLProfiler: Fix truncating subject 2022-08-04 13:40:08 +02:00
3 changed files with 57 additions and 13 deletions

View File

@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben: ' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("3.7.1.0")> <Assembly: AssemblyVersion("3.7.4.0")>
<Assembly: AssemblyFileVersion("3.7.1.0")> <Assembly: AssemblyFileVersion("3.7.4.0")>

View File

@@ -4,6 +4,7 @@ Imports DigitalData.EMLProfiler.ClassCurrent
Imports System.IO Imports System.IO
Imports DigitalData.Modules.Logging Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Database Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Language
Imports System.Threading Imports System.Threading
Imports Limilabs.Mail Imports Limilabs.Mail
Imports Limilabs.Mail.MIME Imports Limilabs.Mail.MIME
@@ -13,6 +14,7 @@ Imports MailBox = Limilabs.Mail.Headers.MailBox
Public Class clsWorkEmail Public Class clsWorkEmail
Private Const FILENAME_MAX_LENGTH = 100 Private Const FILENAME_MAX_LENGTH = 100
Private Const MESSAGE_ID_MAX_LENGTH = 100
Private Shared Logger As Logger Private Shared Logger As Logger
Private MyLogger As LogConfig Private MyLogger As LogConfig
@@ -67,15 +69,40 @@ Public Class clsWorkEmail
CURRENT_MAIL_SUBJECT = MyEmailMessage.Subject.ToUpper CURRENT_MAIL_SUBJECT = MyEmailMessage.Subject.ToUpper
CURRENT_MAIL_MESSAGE_ID = RemoveIllegalFileNameChars(MyEmailMessage.MessageID) CURRENT_MAIL_MESSAGE_ID = RemoveIllegalFileNameChars(MyEmailMessage.MessageID)
CURRENT_MAIL_UID = poUID CURRENT_MAIL_UID = poUID
If IsNothing(CURRENT_MAIL_MESSAGE_ID) Then
CURRENT_MAIL_MESSAGE_ID = System.Guid.NewGuid.ToString()
If String.IsNullOrEmpty(CURRENT_MAIL_MESSAGE_ID) Then
CURRENT_MAIL_MESSAGE_ID = Guid.NewGuid.ToString()
ElseIf CURRENT_MAIL_MESSAGE_ID.Length > MESSAGE_ID_MAX_LENGTH Then
' MessageIds longer than 100 chars will be replaced with a guid to avoid errors
' because of file paths longer than 255 chars.
CURRENT_MAIL_MESSAGE_ID = Hash(CURRENT_MAIL_MESSAGE_ID)
Else Else
If CURRENT_MAIL_MESSAGE_ID.Length = 0 Then ' Default case, should cover most message ids
CURRENT_MAIL_MESSAGE_ID = System.Guid.NewGuid.ToString() CURRENT_MAIL_MESSAGE_ID = CURRENT_MAIL_MESSAGE_ID.Replace(">", "").Replace("<", "")
End If CURRENT_MAIL_MESSAGE_ID = CURRENT_MAIL_MESSAGE_ID.Replace("'", "")
End If End If
CURRENT_MAIL_MESSAGE_ID = CURRENT_MAIL_MESSAGE_ID.Replace(">", "").Replace("<", "")
CURRENT_MAIL_MESSAGE_ID = CURRENT_MAIL_MESSAGE_ID.Replace("'", "") 'If IsNothing(CURRENT_MAIL_MESSAGE_ID) Then
' CURRENT_MAIL_MESSAGE_ID = System.Guid.NewGuid.ToString()
'Else
' If CURRENT_MAIL_MESSAGE_ID.Length = 0 Then
' CURRENT_MAIL_MESSAGE_ID = System.Guid.NewGuid.ToString()
' ElseIf CURRENT_MAIL_MESSAGE_ID.Length > MESSAGE_ID_MAX_LENGTH Then
' ' MessageIds longer than 100 chars will be replaced with a guid to avoid errors
' ' because of file paths longer than 255 chars.
' CURRENT_MAIL_MESSAGE_ID = System.Guid.NewGuid.ToString()
' End If
'End If
'CURRENT_MAIL_MESSAGE_ID = CURRENT_MAIL_MESSAGE_ID.Replace(">", "").Replace("<", "")
'CURRENT_MAIL_MESSAGE_ID = CURRENT_MAIL_MESSAGE_ID.Replace("'", "")
If IsNothing(CURRENT_MAIL_SUBJECT) Then If IsNothing(CURRENT_MAIL_SUBJECT) Then
@@ -89,7 +116,7 @@ Public Class clsWorkEmail
Dim osql = $"Select COALESCE(MAX(GUID),0) FROM TBEMLP_HISTORY WHERE EMAIL_MSGID = '{CURRENT_MAIL_MESSAGE_ID}'" Dim osql = $"Select COALESCE(MAX(GUID),0) FROM TBEMLP_HISTORY WHERE EMAIL_MSGID = '{CURRENT_MAIL_MESSAGE_ID}'"
Dim oHistoryID = _DB_MSSQL.Execute_Scalar(osql) Dim oHistoryID = _DB_MSSQL.Execute_Scalar(osql)
If oHistoryID > 0 Then If oHistoryID > 0 Then
Logger.Info($"Messsage with subject [{CURRENT_MAIL_SUBJECT}] from [{CURRENT_MAIL_FROM}] has already been worked!") Logger.Debug($"Messsage with subject [{CURRENT_MAIL_SUBJECT}] from [{CURRENT_MAIL_FROM}] has already been worked!")
Return True Return True
End If End If
Dim oTempMailExists As Boolean = SAVE2TEMP() Dim oTempMailExists As Boolean = SAVE2TEMP()
@@ -135,6 +162,19 @@ Public Class clsWorkEmail
End Try End Try
End Function End Function
Private Function Hash(pString As String) As String
Using sha1 As Security.Cryptography.SHA1Managed = New Security.Cryptography.SHA1Managed()
Dim oHash = sha1.ComputeHash(Text.Encoding.UTF8.GetBytes(pString))
Dim oBuilder = New Text.StringBuilder(oHash.Length * 2)
For Each b As Byte In oHash
oBuilder.Append(b.ToString("X2"))
Next
Return oBuilder.ToString()
End Using
End Function
Public Function AddToEmailQueueMSSQL(MessageId As String, BodyText As String, SourceProcedure As String, pEmailAccountId As Integer) As Boolean Public Function AddToEmailQueueMSSQL(MessageId As String, BodyText As String, SourceProcedure As String, pEmailAccountId As Integer) As Boolean
Try Try
@@ -336,7 +376,7 @@ Public Class clsWorkEmail
' Subject can be FILENAME_MAX_LENGTH chars at most, ' Subject can be FILENAME_MAX_LENGTH chars at most,
' otherwise we run into errors with the path being too long ' otherwise we run into errors with the path being too long
Dim oSubjectFilename = CURRENT_MAIL_MESSAGE.Subject.Substring(0, FILENAME_MAX_LENGTH) & ".eml" Dim oSubjectFilename = CURRENT_MAIL_MESSAGE.Subject.Truncate(FILENAME_MAX_LENGTH) & ".eml"
Logger.Debug($"oSubjectFilename (beforeclean) is: {oSubjectFilename}") Logger.Debug($"oSubjectFilename (beforeclean) is: {oSubjectFilename}")
oSubjectFilename = RemoveIllegalFileNameChars(oSubjectFilename) oSubjectFilename = RemoveIllegalFileNameChars(oSubjectFilename)
@@ -399,7 +439,7 @@ Public Class clsWorkEmail
'oTempFilename &= "\" & CURRENT_MAIL_MESSAGE_ID & ".eml" 'oTempFilename &= "\" & CURRENT_MAIL_MESSAGE_ID & ".eml"
Else Else
Dim oFileName = CURRENT_MAIL_MESSAGE.Subject.Replace(" ", "") & ".eml" Dim oFileName = CURRENT_MAIL_MESSAGE.Subject.Truncate(FILENAME_MAX_LENGTH).Replace(" ", "") & ".eml"
oTempFilename = Path.Combine(oTempFilename, oFileName) oTempFilename = Path.Combine(oTempFilename, oFileName)
'oTempFilename &= "\" & CURRENT_MAIL_MESSAGE.Subject.Replace(" ", "") & ".eml" 'oTempFilename &= "\" & CURRENT_MAIL_MESSAGE.Subject.Replace(" ", "") & ".eml"
@@ -737,7 +777,7 @@ Public Class clsWorkEmail
If MessageError = False Then If MessageError = False Then
Dim ins = $"INSERT INTO TBEMLP_HISTORY (WORK_PROCESS,EMAIL_MSGID,EMAIL_SUBJECT,EMAIL_DATE,EMAIL_BODY,EMAIL_SUBSTRING1,EMAIL_SUBSTRING2,EMAIL_FROM,PROFILE_ID) VALUES " & Dim ins = $"INSERT INTO TBEMLP_HISTORY (WORK_PROCESS,EMAIL_MSGID,EMAIL_SUBJECT,EMAIL_DATE,EMAIL_BODY,EMAIL_SUBSTRING1,EMAIL_SUBSTRING2,EMAIL_FROM,PROFILE_ID) VALUES " &
$"('{CURRENT_MAIL_PROCESS_NAME}'," & $"('{CURRENT_MAIL_PROCESS_NAME}'," &
$"'{CURRENT_MAIL_MESSAGE.MessageID.Replace("<", "").Replace(">", "")}'," & $"'{CURRENT_MAIL_MESSAGE_ID}'," &
$"'{CURRENT_MAIL_SUBJECT}'," & $"'{CURRENT_MAIL_SUBJECT}'," &
$"'{CURRENT_MAIL_MESSAGE.Date}'," & $"'{CURRENT_MAIL_MESSAGE.Date}'," &
$"'{CURRENT_MAIL_BODY_ALL}'," & $"'{CURRENT_MAIL_BODY_ALL}'," &

View File

@@ -51,6 +51,10 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\DigitalData.EMLProfiler\bin\Debug\DigitalData.EMLProfiler.dll</HintPath> <HintPath>..\DigitalData.EMLProfiler\bin\Debug\DigitalData.EMLProfiler.dll</HintPath>
</Reference> </Reference>
<Reference Include="DigitalData.Modules.Language, Version=1.6.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\DDMonorepo\Modules.Language\bin\Debug\DigitalData.Modules.Language.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Modules.Logging, Version=0.0.0.1, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="DigitalData.Modules.Logging, Version=0.0.0.1, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\DDMonorepo\Modules.Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath> <HintPath>..\..\..\DDMonorepo\Modules.Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>