diff --git a/App/CONFIG_APP/CONFIG_APP.vbproj b/App/CONFIG_APP/CONFIG_APP.vbproj index e2860b1..2737341 100644 --- a/App/CONFIG_APP/CONFIG_APP.vbproj +++ b/App/CONFIG_APP/CONFIG_APP.vbproj @@ -99,7 +99,6 @@ - Form diff --git a/App/CONFIG_APP/Class1.vb b/App/CONFIG_APP/Class1.vb deleted file mode 100644 index 875798b..0000000 --- a/App/CONFIG_APP/Class1.vb +++ /dev/null @@ -1,3 +0,0 @@ -Public Class Class1 - -End Class diff --git a/App/DigitalData.EMLProfiler/ClassCurrent.vb b/App/DigitalData.EMLProfiler/ClassCurrent.vb index f4fc5d6..ffc62ed 100644 --- a/App/DigitalData.EMLProfiler/ClassCurrent.vb +++ b/App/DigitalData.EMLProfiler/ClassCurrent.vb @@ -6,72 +6,68 @@ Imports MailBox = Limilabs.Mail.Headers.MailBox Imports Limilabs.Client.IMAP Public Class ClassCurrent - Public Shared WM_CON_STRING As String - Public Shared WM_DRIVE As String - Public Shared TIMER_INTERVALL As Integer = 5 + Public Shared Property WM_CON_STRING As String + Public Shared Property WM_DRIVE As String + Public Shared Property TIMER_INTERVALL As Integer = 5 - Public Shared LOG_INITIALIZED As Boolean = False - Public Shared CURRENT_FILEIN_WD As String - Public Shared CURRENT_IMPORT_ID As Integer + Public Shared Property CURRENT_EMAIL_GUID As Integer + Public Shared Property CURRENT_PROFILE_GUID As Integer + Public Shared Property DTCONFIG As DataTable + Public Shared Property DT_ECM_BASE_CONFIG As DataTable + Public Shared Property PATH_TEMP As String + Public Shared Property PATH_ERROR As String - Public Shared CURRENT_EMAIL_GUID As Integer - Public Shared CURRENT_PROFILE_GUID As Integer - Public Shared DTCONFIG As DataTable - Public Shared DT_ECM_BASE_CONFIG As DataTable - Public Shared PATH_TEMP As String - Public Shared PATH_ERROR As String + Public Shared Property MAIL_BODY_FONT As String = "" + Public Shared Property MAIL_FROM As String = "" + Public Shared Property MAIL_SERVER As String = "" + Public Shared Property MAIL_USER As String = "" + Public Shared Property MAIL_USER_PW As String = "" + Public Shared Property MAIL_PORT As Integer = 995 + Public Shared Property MAIL_INBOX_NAME As String = "Inbox" + Public Shared Property MAIL_ARCHIVE_FOLDER As String = "" + Public Shared Property MAIL_AUTHTYPE As String + Public Shared Property DT_POLL_PROCESS As DataTable + Public Shared Property DT_STEPS As DataTable + Public Shared Property DT_INDEXING_STEPS As DataTable - Public Shared MAIL_BODY_FONT As String = "" - Public Shared MAIL_FROM As String = "" - Public Shared MAIL_SERVER As String = "" - Public Shared MAIL_USER As String = "" - Public Shared MAIL_USER_PW As String = "" - Public Shared MAIL_PORT As Integer = 995 - Public Shared MAIL_INBOX_NAME As String = "Inbox" - Public Shared MAIL_ARCHIVE_FOLDER As String = "" - Public Shared MAIL_AUTHTYPE As String - Public Shared DT_POLL_PROCESS As DataTable - Public Shared DT_STEPS As DataTable - Public Shared DT_INDEXING_STEPS As DataTable + ' Public Shared Property oCURRENT_WORKMAIL_LIST As New ArrayList() + Public Shared Property CURRENT_WORKMAIL_UID_LIST As New List(Of Long) - ' Public Shared oCURRENT_WORKMAIL_LIST As New ArrayList() - Public Shared CURRENT_WORKMAIL_UID_LIST As New List(Of Long) + Public Shared Property CURRENT_MAIL_MESSAGE As IMail + Public Shared Property CURRENT_TEMP_MAIL_PATH As String + Public Shared Property CURRENT_MAIL_BODY_ALL As String + Public Shared Property CURRENT_MAIL_BODY_ANSWER1 As String = "" + Public Shared Property CURRENT_MAIL_BODY_Substr2 As String = "" + Public Shared Property CURRENT_MAIL_SUBJECT As String = "" + Public Shared Property CURRENT_MAIL_FROM As String = "" + Public Shared Property CURRENT_MAIL_MESSAGE_ID As String = "" + Public Shared Property CURRENT_MAIL_UID As Long + Public Shared Property CURRENT_MAIL_PROCESS_NAME As String + Public Shared Property CURRENT_ImapObject As Imap - Public Shared CURRENT_MAIL_MESSAGE As IMail - Public Shared CURRENT_TEMP_MAIL_PATH As String - Public Shared CURRENT_MAIL_BODY_ALL As String - Public Shared CURRENT_MAIL_BODY_ANSWER1 As String = "" - Public Shared CURRENT_MAIL_BODY_Substr2 As String = "" - Public Shared CURRENT_MAIL_SUBJECT As String = "" - Public Shared CURRENT_MAIL_FROM As String = "" - Public Shared CURRENT_MAIL_MESSAGE_ID As String = "" - Public Shared CURRENT_MAIL_UID As Long - Public Shared CURRENT_MAIL_PROCESS_NAME As String - Public Shared CURRENT_ImapObject As Imap + Public Shared Property DeleteMail As Boolean = False + Public Shared Property CURRENT_POLL_TYPE As String - Public Shared DeleteMail As Boolean = False - Public Shared CURRENT_POLL_TYPE As String + Public Shared Property POLL_STEP_GUID As Integer + Public Shared Property POLL_STEP_PROCESS_ID As Integer + Public Shared Property POLL_KEYWORDS As String + Public Shared Property KEYWORDS_SPLIT As String() - Public Shared POLL_STEP_GUID As Integer - Public Shared POLL_STEP_PROCESS_ID As Integer - Public Shared POLL_KEYWORDS As String - Public Shared KEYWORDS_SPLIT As String() + Public Shared Property WM_REFERENCE_INDEX As String + Public Shared Property WM_VECTOR_LOG As String + Public Shared Property WM_OBJEKTTYPE As String + Public Shared Property WM_IDX_BODY_TEXT As String + Public Shared Property WM_IDX_BODY_SUBSTR_LENGTH As String - Public Shared WM_REFERENCE_INDEX As String - Public Shared WM_VECTOR_LOG As String - Public Shared WM_OBJEKTTYPE As String - Public Shared WM_IDX_BODY_TEXT As String - Public Shared WM_IDX_BODY_SUBSTR_LENGTH As String + Public Shared Property CURRENT_WM_DOC As WMObject + Public Shared Property CURRENT_DOC_ID As Integer + Public Shared Property CURRENT_DOC_PATH As String + Public Shared Property MessageError As Boolean = False - Public Shared CURRENT_WM_DOC As WMObject - Public Shared CURRENT_DOC_ID As Integer - Public Shared CURRENT_DOC_PATH As String - Public Shared MessageError As Boolean = False + Public Shared Property TEMP_FILES As List(Of String) = New List(Of String) + Public Shared Property TEMP_HTML_RESULTS As List(Of String) = New List(Of String) - Public Shared TEMP_FILES As List(Of String) = New List(Of String) - Public Shared TEMP_HTML_RESULTS As List(Of String) = New List(Of String) - - Public Shared CURRENT_DEBUG_LOCAL_EMAIL As String + Public Shared Property CURRENT_DEBUG_LOCAL_EMAIL As String End Class diff --git a/App/DigitalData.EMLProfiler/DigitalData.EMLProfiler.vbproj b/App/DigitalData.EMLProfiler/DigitalData.EMLProfiler.vbproj index 3f430d7..5475f1c 100644 --- a/App/DigitalData.EMLProfiler/DigitalData.EMLProfiler.vbproj +++ b/App/DigitalData.EMLProfiler/DigitalData.EMLProfiler.vbproj @@ -46,6 +46,9 @@ ..\packages\AE.Net.Mail.1.7.10.0\lib\net45\AE.Net.Mail.dll + + ..\..\..\DDMonorepo\Modules.Base\Base\bin\Debug\DigitalData.Modules.Base.dll + False ..\..\..\DDMonorepo\Modules.Database\bin\Debug\DigitalData.Modules.Database.dll @@ -53,6 +56,10 @@ ..\..\..\DDMonorepo\Modules.Filesystem\bin\Debug\DigitalData.Modules.Filesystem.dll + + False + ..\..\..\DDMonorepo\Modules.Language\bin\Debug\DigitalData.Modules.Language.dll + ..\..\..\DDMonorepo\Modules.Logging\bin\Debug\DigitalData.Modules.Logging.dll @@ -113,6 +120,7 @@ + diff --git a/App/DigitalData.EMLProfiler/MailContainer.vb b/App/DigitalData.EMLProfiler/MailContainer.vb new file mode 100644 index 0000000..d726928 --- /dev/null +++ b/App/DigitalData.EMLProfiler/MailContainer.vb @@ -0,0 +1,52 @@ +Imports Limilabs.Mail +Imports DigitalData.Modules.Language + +Public Class MailContainer + Private ReadOnly Uid As String + Private ReadOnly FilteredMessageId + + Public ReadOnly Property Mail As IMail + + Public ReadOnly Property Subject As String + Get + Return Mail.Subject + End Get + End Property + + Public ReadOnly Property MessageId As String + Get + Return Mail.MessageID + End Get + End Property + + Public ReadOnly Property MessageIdPathSafe As String + Get + Return FilteredMessageId + End Get + End Property + + Public Property BodyComplete As String + Public Property BodySubstring1 As String + Public Property BodySubstring2 As String + + + + Public Sub New(pMail As IMail, pUid As String) + Mail = pMail + Uid = pUid + FilteredMessageId = ProcessMessageId(pMail.MessageID) + End Sub + + Private Function ProcessMessageId(pOriginalMessageId As String) As String + If pOriginalMessageId Is Nothing Then + Return Guid.NewGuid.ToString + End If + + If TypeOf pOriginalMessageId Is String AndAlso pOriginalMessageId.Length = 0 Then + Return Guid.NewGuid.ToString + End If + + Return Utils.RemoveInvalidCharacters(pOriginalMessageId) + End Function + +End Class diff --git a/App/DigitalData.EMLProfiler/clsWorkEmail.vb b/App/DigitalData.EMLProfiler/clsWorkEmail.vb index 7c6bdc2..55608d5 100644 --- a/App/DigitalData.EMLProfiler/clsWorkEmail.vb +++ b/App/DigitalData.EMLProfiler/clsWorkEmail.vb @@ -12,6 +12,8 @@ Imports MailBox = Limilabs.Mail.Headers.MailBox 'Imports DigitalData.Modules.Messaging Public Class clsWorkEmail + Private Const FILENAME_MAX_LENGTH = 100 + Private Shared Logger As Logger Private MyLogger As LogConfig Private _DB_MSSQL As clsDatabase @@ -54,6 +56,9 @@ Public Class clsWorkEmail CURRENT_MAIL_FROM = m.Address Next + 'TODO: Move all of these CURRENT_MAIL vars into a business object of type mail container + 'Dim oMail As New MailContainer(MyEmailMessage, poUID) + Logger.Debug($"Working on email from: {CURRENT_MAIL_FROM}...Subject: {MyEmailMessage.Subject}") CURRENT_MAIL_BODY_ALL = "" CURRENT_MAIL_BODY_ANSWER1 = "" @@ -327,7 +332,11 @@ Public Class clsWorkEmail End Try Next oFileName Dim oResult As Boolean = False - Dim oSubjectFilename = CURRENT_MAIL_MESSAGE.Subject & ".eml" + + ' 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" + Logger.Debug($"oSubjectFilename (beforeclean) is: {oSubjectFilename}") oSubjectFilename = RemoveIllegalFileNameChars(oSubjectFilename) Dim oTempFilename = oTempPath & "\" & oSubjectFilename @@ -375,21 +384,28 @@ Public Class clsWorkEmail Return False End Try End Function - Private Function COPY2HDD(copy_2_hdd As Boolean, pathOriginal As String, pathemail_errors As String, messageid As Boolean) As Boolean + Private Function COPY2HDD(pShouldCopyToDisk As Boolean, pPathOriginal As String, pPathErrors As String, pUseMessageIdAsFilename As Boolean) As Boolean Try - If copy_2_hdd = True Then + If pShouldCopyToDisk = True Then Logger.Debug("COPY_2_HDD is ACTIVE!") - PATH_ERROR = pathemail_errors - If Directory.Exists(pathOriginal) Then - Dim oTempFilename = pathOriginal - If messageid = True Then - oTempFilename &= "\" & CURRENT_MAIL_MESSAGE_ID & ".eml" + PATH_ERROR = pPathErrors + If Directory.Exists(pPathOriginal) Then + Dim oTempFilename = pPathOriginal + + If pUseMessageIdAsFilename = True Then + Dim oFileName = CURRENT_MAIL_MESSAGE_ID & ".eml" + oTempFilename = Path.Combine(oTempFilename, oFileName) + + 'oTempFilename &= "\" & CURRENT_MAIL_MESSAGE_ID & ".eml" Else - oTempFilename &= "\" & CURRENT_MAIL_MESSAGE.Subject.Replace(" ", "") & ".eml" + Dim oFileName = CURRENT_MAIL_MESSAGE.Subject.Replace(" ", "") & ".eml" + oTempFilename = Path.Combine(oTempFilename, oFileName) + + 'oTempFilename &= "\" & CURRENT_MAIL_MESSAGE.Subject.Replace(" ", "") & ".eml" End If 'Dim cleanPath As String = String.Join("", oTempFilename.Split(Path.GetInvalidPathChars())) - If System.IO.File.Exists(oTempFilename) = False Then + If File.Exists(oTempFilename) = False Then Try File.Delete(oTempFilename) Catch ex As Exception @@ -422,7 +438,6 @@ Public Class clsWorkEmail End If Catch ex As Exception Logger.Error(ex) - 'clsLogger.Add("Unexpected Error in COPY2HDD: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True) Return False End Try End Function @@ -717,17 +732,6 @@ Public Class clsWorkEmail End Try End Function - Private Function RemoveCharacter(ByVal stringToCleanUp) - Dim characterToRemove As String = "" - characterToRemove = Chr(34) + "#$%&'()*+,-./\~" - Dim firstThree As Char() = characterToRemove.Take(16).ToArray() - For index = 1 To firstThree.Length - 1 - stringToCleanUp = stringToCleanUp.ToString.Replace(firstThree(index), "") - Next - Return stringToCleanUp - End Function - - Private Function INSERT_HISTORY_MSSQL() As Boolean 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 " &