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:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("3.7.1.0")>
<Assembly: AssemblyFileVersion("3.7.1.0")>
<Assembly: AssemblyVersion("3.7.4.0")>
<Assembly: AssemblyFileVersion("3.7.4.0")>

View File

@@ -4,6 +4,7 @@ Imports DigitalData.EMLProfiler.ClassCurrent
Imports System.IO
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Language
Imports System.Threading
Imports Limilabs.Mail
Imports Limilabs.Mail.MIME
@@ -13,6 +14,7 @@ Imports MailBox = Limilabs.Mail.Headers.MailBox
Public Class clsWorkEmail
Private Const FILENAME_MAX_LENGTH = 100
Private Const MESSAGE_ID_MAX_LENGTH = 100
Private Shared Logger As Logger
Private MyLogger As LogConfig
@@ -67,15 +69,40 @@ Public Class clsWorkEmail
CURRENT_MAIL_SUBJECT = MyEmailMessage.Subject.ToUpper
CURRENT_MAIL_MESSAGE_ID = RemoveIllegalFileNameChars(MyEmailMessage.MessageID)
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
If CURRENT_MAIL_MESSAGE_ID.Length = 0 Then
CURRENT_MAIL_MESSAGE_ID = System.Guid.NewGuid.ToString()
End If
' Default case, should cover most message ids
CURRENT_MAIL_MESSAGE_ID = CURRENT_MAIL_MESSAGE_ID.Replace(">", "").Replace("<", "")
CURRENT_MAIL_MESSAGE_ID = CURRENT_MAIL_MESSAGE_ID.Replace("'", "")
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
@@ -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 oHistoryID = _DB_MSSQL.Execute_Scalar(osql)
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
End If
Dim oTempMailExists As Boolean = SAVE2TEMP()
@@ -135,6 +162,19 @@ Public Class clsWorkEmail
End Try
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
Try
@@ -336,7 +376,7 @@ Public Class clsWorkEmail
' Subject can be FILENAME_MAX_LENGTH chars at most,
' 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}")
oSubjectFilename = RemoveIllegalFileNameChars(oSubjectFilename)
@@ -399,7 +439,7 @@ Public Class clsWorkEmail
'oTempFilename &= "\" & CURRENT_MAIL_MESSAGE_ID & ".eml"
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 &= "\" & CURRENT_MAIL_MESSAGE.Subject.Replace(" ", "") & ".eml"
@@ -737,7 +777,7 @@ Public Class clsWorkEmail
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 " &
$"('{CURRENT_MAIL_PROCESS_NAME}'," &
$"'{CURRENT_MAIL_MESSAGE.MessageID.Replace("<", "").Replace(">", "")}'," &
$"'{CURRENT_MAIL_MESSAGE_ID}'," &
$"'{CURRENT_MAIL_SUBJECT}'," &
$"'{CURRENT_MAIL_MESSAGE.Date}'," &
$"'{CURRENT_MAIL_BODY_ALL}'," &

View File

@@ -51,6 +51,10 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\DigitalData.EMLProfiler\bin\Debug\DigitalData.EMLProfiler.dll</HintPath>
</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">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\DDMonorepo\Modules.Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>