P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll
False
diff --git a/App/EmailProfiler.Common/EmailStrings.vb b/App/EmailProfiler.Common/EmailStrings.vb
index 2f6f7d7..0de75e0 100644
--- a/App/EmailProfiler.Common/EmailStrings.vb
+++ b/App/EmailProfiler.Common/EmailStrings.vb
@@ -16,6 +16,8 @@
Public Const EMAIL_MISSINGPROPERTIES_1 = "Die angehängte Datei entspricht nicht dem ZUGFeRD-Format: {0}
"
Public Const EMAIL_MISSINGPROPERTIES_2 = "Die folgenden Eigenschaften wurden als ERFORDERLICH eingestuft, wurden aber nicht gefunden:
"
+
+
Public Const EMAIL_MD5_ERROR = "Die von Ihnen gesendete Rechnung wurde bereits von unserem System verarbeitet.
"
Public Const EMAIL_TOO_MUCH_FERDS = "Ihre Email enthielt mehr als ein ZUGFeRD-Dokument.
"
diff --git a/App/EmailProfiler.Common/clsWindream_Index.vb b/App/EmailProfiler.Common/clsWindream_Index.vb
index 5c63e5d..843ce40 100644
--- a/App/EmailProfiler.Common/clsWindream_Index.vb
+++ b/App/EmailProfiler.Common/clsWindream_Index.vb
@@ -737,7 +737,7 @@ Public Class clsWindream_Index
Return ValueArray
Catch ex As Exception
Logger.Error(ex)
- ClassCurrent.MessageError = True
+ ClassCurrent.MESSAGE_ERROR = True
'clsLogger.AddError(ex.Message, "Return_VektorArray")
Return Nothing
End Try
diff --git a/App/EmailProfiler.Common/clsWorkEmail.vb b/App/EmailProfiler.Common/clsWorkEmail.vb
index bfe7118..26debed 100644
--- a/App/EmailProfiler.Common/clsWorkEmail.vb
+++ b/App/EmailProfiler.Common/clsWorkEmail.vb
@@ -10,6 +10,7 @@ Imports Limilabs.Mail
Imports Limilabs.Mail.MIME
Imports Limilabs.Mail.Headers
Imports MailBox = Limilabs.Mail.Headers.MailBox
+Imports DigitalData.Modules.Patterns
Public Class clsWorkEmail
Private Const SUBJECT_MAX_LENGTH = 25
@@ -25,13 +26,6 @@ Public Class clsWorkEmail
Private CURRENT_MAIL_SUBJECT As String = ""
Private CURRENT_MAIL_FROM As String = ""
-
- '''
- ''' Primary Mail Identifier.
- ''' Is a hash of the MessageId, used to be the MessageId itself.
- '''
- 'Private Property CURRENT_MAIL_MESSAGE_ID As String = ""
-
Private CurrentMailProcessName As String
Private ReadOnly _Logger As Logger
@@ -43,6 +37,7 @@ Public Class clsWorkEmail
Private ReadOnly _windream As clsWindream_allgemein
Private ReadOnly _windream_index As clsWindream_Index
Private ReadOnly _windreamConnectionString As String
+ Private ReadOnly _Patterns As Patterns2
Private ReadOnly _EmailAccountID As Integer = 1
@@ -52,10 +47,10 @@ Public Class clsWorkEmail
Try
_Logger = LogConf.GetLogger
_LogConfig = LogConf
- '_DB_MSSQL = New clsDatabase(LogConf, ConStr)
_DB_MSSQL = New MSSQLServer(LogConf, ConStr)
_Logger.Debug("clsWorkmail _email initialized")
_UseWindream = pUseWindream
+ _Patterns = New Patterns2(LogConf)
If pUseWindream Then
_windream = New clsWindream_allgemein(LogConf)
@@ -69,7 +64,7 @@ Public Class clsWorkEmail
_Logger.Error(ex)
End Try
End Sub
- Public Function WorkEmailMessage(pMailMessage As IMail, poUID As Long) As Boolean
+ Public Function WorkEmailMessage(pMailMessage As IMail, poUID As Long, pValidationSQL As String) As Boolean
Try
For Each m As MailBox In pMailMessage.From
CURRENT_MAIL_FROM = m.Address
@@ -82,7 +77,6 @@ Public Class clsWorkEmail
CURRENT_MAIL_BODY_ALL = ""
CURRENT_MAIL_BODY_ANSWER1 = ""
CURRENT_MAIL_BODY_Substr2 = ""
- 'CURRENT_MAIL_MESSAGE = pMailMessage
CURRENT_MAIL_SUBJECT = pMailMessage.Subject.ToUpper.EscapeForSQL()
CURRENT_MAIL_UID = poUID
@@ -120,8 +114,8 @@ Public Class clsWorkEmail
_Logger.Info($"Working on email from : {CURRENT_MAIL_FROM}...")
- Dim osql = $"Select COALESCE(MAX(GUID),0) FROM TBEMLP_HISTORY WHERE EMAIL_MSGID = '{CurrentMail.MessageId}'"
- Dim oHistoryID = _DB_MSSQL.GetScalarValue(osql)
+ Dim oSql = $"Select COALESCE(MAX(GUID),0) FROM TBEMLP_HISTORY WHERE EMAIL_MSGID = '{CurrentMail.MessageId}'"
+ Dim oHistoryID = _DB_MSSQL.GetScalarValue(oSql)
If oHistoryID > 0 Then
_Logger.Info($"Messsage with subject [{CURRENT_MAIL_SUBJECT}] from [{CURRENT_MAIL_FROM}] has already been worked!")
@@ -129,48 +123,80 @@ Public Class clsWorkEmail
End If
Dim oTempMailExists As Boolean = SAVE2TEMP(CurrentMail)
+
'Checking wether Mail can be opened
Dim oTempMailAccessible As Boolean = False
- If oTempMailExists = True Then
- Try
- Dim oFS As FileStream = File.OpenRead(CurrentTempMailPath)
- oTempMailAccessible = True
- oFS.Close()
- Catch ex As Exception
- _Logger.Warn($"Could not read the Temp-Mail. Insufficient rights? Message: {ex.Message}")
- End Try
- If oTempMailAccessible = True Then
- MessageError = False
- If CURRENT_MAIL_SUBJECT.Contains("[PROCESSMANAGER]") Then
- PROCESS_MANAGER_IN(CurrentMail)
- ElseIf pMailMessage.Subject.Contains("[ADDI]") Then
- Else
- _Logger.Debug("CommonEmail-Process-Sniffer")
- If COMMON_EMAIL_IN(CurrentMail) = True Then
- InsertHistoryEntry(CurrentMail)
- If CURRENT_ATTMT_COUNT = 0 Then
- _Logger.Info("### Mail contained no Attachments!! ###")
- Dim oBody = EmailStrings.EMAIL_NO_FERDS
- If AddToEmailQueueMSSQL(CurrentMail.MessageId, oBody, "No Attachments", _EmailAccountID) = True Then
- CURRENT_ImapObject.DeleteMessageByUID(poUID)
- End If
- End If
- Return True
- Else
- Return False
+ If oTempMailExists = False Then
+ _Logger.Warn("Could not process email [{0}], file does not exist!", CurrentMail.MessageId)
+ Return False
+ End If
+
+ Try
+ Dim oFS As FileStream = File.OpenRead(CurrentTempMailPath)
+ oTempMailAccessible = True
+ oFS.Close()
+ Catch ex As Exception
+ _Logger.Warn($"Could not read the Temp-Mail. Insufficient rights? Message: {ex.Message}")
+ End Try
+
+ If oTempMailAccessible = False Then
+ _Logger.Warn("Could not process email [{0}], file does is not accessible!", CurrentMail.MessageId)
+ Return False
+ End If
+
+ MESSAGE_ERROR = False
+
+ If pValidationSQL <> "" Then
+
+ Dim oReplaceValues = New Dictionary(Of String, String) From {
+ {"EMAIL", CurrentMail.SenderAddress},
+ {"DOMAIN", CurrentMail.SenderDomain}
+ }
+
+ Dim pValidationSQLWithPlaceholders = _Patterns.ReplaceCustomValues(pValidationSQL, oReplaceValues)
+ Dim oResult As String = ObjectEx.NotNull(_DB_MSSQL.GetScalarValue(pValidationSQLWithPlaceholders), "")
+
+ If oResult <> "" Then
+ 'insert history und exit
+ InsertHistoryEntryWithStatus(pMailMessage, "REJECTED", oResult)
+
+ AddToEmailQueueMSSQL(CurrentMail.MessageId, oResult, "Email validation failed", _EmailAccountID)
+
+ ' Return early from processing eml
+ Return True
+ End If
+
+ End If
+
+ If CURRENT_MAIL_SUBJECT.Contains("[PROCESSMANAGER]") Then
+ Return PROCESS_MANAGER_IN(CurrentMail)
+
+ Else
+ _Logger.Debug("CommonEmail-Process-Sniffer")
+ If COMMON_EMAIL_IN(CurrentMail) = True Then
+ InsertHistoryEntry(CurrentMail)
+ If CURRENT_ATTMT_COUNT = 0 Then
+ _Logger.Info("### Mail contained no Attachments!! ###")
+ Dim oBody = EmailStrings.EMAIL_NO_FERDS
+ If AddToEmailQueueMSSQL(CurrentMail.MessageId, oBody, "No Attachments", _EmailAccountID) = True Then
+ CURRENT_ImapObject.DeleteMessageByUID(poUID)
End If
End If
-
+ Return True
+ Else
+ Return False
End If
+
End If
+
Catch ex As Exception
_Logger.Error(ex)
Return False
End Try
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, Comment As String, pEmailAccountId As Integer) As Boolean
Try
Dim oReference = MessageId
@@ -222,7 +248,7 @@ Public Class clsWorkEmail
,'{oEmailTo}'
,'{oSubject}'
,'{oFinalBodyText}'
- ,'{SourceProcedure}'
+ ,'{Comment}'
,'{oCreatedWho}')"
Return _DB_MSSQL.ExecuteNonQuery(oInsert)
Else
@@ -478,37 +504,19 @@ Public Class clsWorkEmail
End Try
End Function
- Private Function COPY2HDD(pCurrentMail As MailContainer, pShouldCopyToDisk As Boolean, pPathOriginal As String, pPathErrors As String, pUseMessageIdAsFilename As Boolean) As Boolean
+ Private Function COPY2HDD(pCurrentMail As MailContainer, pShouldCopyToDisk As Boolean, pDestination As String, pPathErrors As String, pUseMessageIdAsFilename As Boolean) As Boolean
Try
If pShouldCopyToDisk = True Then
_Logger.Debug("COPY_2_HDD is ACTIVE!")
'PATH_ERROR = pPathErrors
- If Directory.Exists(pPathOriginal) Then
- Dim oTempFilename = pPathOriginal
+ If Directory.Exists(pDestination) Then
+ Dim oTempFilename = Path.Combine(pDestination, $"{pCurrentMail.MessageId}.eml")
- 'If pUseMessageIdAsFilename = True Then
- ' Dim oFileName = CURRENT_MAIL_MESSAGE_ID & ".eml"
- ' oTempFilename = Path.Combine(oTempFilename, oFileName)
-
- ' 'oTempFilename &= "\" & CURRENT_MAIL_MESSAGE_ID & ".eml"
- 'Else
- ' Dim oFileName = CURRENT_MAIL_MESSAGE.Subject.Truncate(SUBJECT_MAX_LENGTH).Replace(" ", "") & ".eml"
- ' oTempFilename = Path.Combine(oTempFilename, oFileName)
-
- ' 'oTempFilename &= "\" & CURRENT_MAIL_MESSAGE.Subject.Replace(" ", "") & ".eml"
- 'End If
- oTempFilename = Path.Combine(oTempFilename, $"{pCurrentMail.MessageId}.eml")
-
- 'Dim cleanPath As String = String.Join("", oTempFilename.Split(Path.GetInvalidPathChars()))
If File.Exists(oTempFilename) = False Then
- Try
- File.Delete(oTempFilename)
- Catch ex As Exception
- _Logger.Error(ex)
- Return False
- End Try
pCurrentMail.Mail.Save(oTempFilename)
+
+
Dim oFileInfo As New FileInfo(oTempFilename)
Dim oFileLenth As Long = oFileInfo.Length
If oFileLenth > 0 Then
@@ -529,7 +537,7 @@ Public Class clsWorkEmail
Return True
End If
Else
- _Logger.Error("Destination directory [{0}] does not exist!", pPathOriginal)
+ _Logger.Error("Destination directory [{0}] does not exist!", pDestination)
Return False
End If
Else
@@ -595,7 +603,7 @@ Public Class clsWorkEmail
If CURRENT_MAIL_BODY_ALL = String.Empty Then
_Logger.Warn("Mailbody is empty. Email can not be processed! - Please check the html-structure")
_Logger.Info("EXCEPTION - Mailbody is empty.Email can not be processed! - Please check the html-structure")
- MessageError = True
+ MESSAGE_ERROR = True
Return False
Else
_Logger.Debug($"Length of Body is [{CURRENT_MAIL_BODY_ALL.Length}] - Body Text is [{CURRENT_MAIL_BODY_ALL}]")
@@ -638,7 +646,7 @@ Public Class clsWorkEmail
Catch ex As Exception
_Logger.Error(ex)
'clsLogger.Add("Unexpected Error in COPY2HDD: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True)
- MessageError = True
+ MESSAGE_ERROR = True
Return False
End Try
End Function
@@ -714,12 +722,12 @@ Public Class clsWorkEmail
Catch ex As Exception
_Logger.Error(ex)
End Try
- MessageError = True
+ MESSAGE_ERROR = True
End If
Catch ex As Exception
_Logger.Warn($"Error while saving attachment-name: {ex.Message} - AttachmentName: {oAttachmentFilePath}")
- MessageError = True
+ MESSAGE_ERROR = True
End Try
Else
@@ -729,7 +737,7 @@ Public Class clsWorkEmail
Catch ex As Exception
_Logger.Warn($"Error while creating and saving attachment-name: {ex.Message} - AttachmentName: {oAttachmentFilePath}")
- MessageError = True
+ MESSAGE_ERROR = True
End Try
Next
@@ -740,21 +748,29 @@ Public Class clsWorkEmail
_Logger.Warn($"EXTRACT_ATTACHMENTSIf cause 1: CURRENT_TEMP_MAIL_PATH is NOTHING")
End If
CURRENT_ATTMT_COUNT = oAttachmentCount
- If MessageError = True Then
+ If MESSAGE_ERROR = True Then
Return False
Else
Return True
End If
Catch ex As Exception
_Logger.Error(ex)
- MessageError = True
+ MESSAGE_ERROR = True
Return False
End Try
End Function
Private Function InsertHistoryEntry(pCurrentMail As MailContainer) As Boolean
- If MessageError = False Then
- Dim ins = $"INSERT INTO TBEMLP_HISTORY (
+ If MESSAGE_ERROR = False Then
+ Return InsertHistoryEntryWithStatus(pCurrentMail, String.Empty, String.Empty)
+ Else
+ _Logger.Info("! No INSERT_HISTORY as MessageError = True")
+ Return False
+ End If
+ End Function
+
+ Private Function InsertHistoryEntryWithStatus(pCurrentMail As MailContainer, pStatus As String, pComment As String) As Boolean
+ Dim ins = $"INSERT INTO TBEMLP_HISTORY (
WORK_PROCESS,
EMAIL_MSGID,
EMAIL_SUBJECT,
@@ -763,7 +779,9 @@ Public Class clsWorkEmail
EMAIL_SUBSTRING1,
EMAIL_SUBSTRING2,
EMAIL_FROM,
- PROFILE_ID
+ PROFILE_ID,
+ STATUS,
+ COMMENT
) VALUES (
'{CurrentMailProcessName}',
'{pCurrentMail.MessageId}',
@@ -773,13 +791,11 @@ Public Class clsWorkEmail
'{CURRENT_MAIL_BODY_ANSWER1}',
'{CURRENT_MAIL_BODY_Substr2}',
'{pCurrentMail.SenderAddress}',
- {CURRENT_PROFILE_GUID}
+ {CURRENT_PROFILE_GUID},
+ '{pStatus}',
+ '{pComment.Substring(0, 500)}'
)"
- Return _DB_MSSQL.ExecuteNonQuery(ins)
- Else
- _Logger.Info("! No INSERT_HISTORY as MessageError = True")
- Return False
- End If
+ Return _DB_MSSQL.ExecuteNonQuery(ins)
End Function
Private Function InsertAttachmentHistoryEntry(pCurrentMail As MailContainer, pMessageId As String, pFileName As String) As Boolean
@@ -788,8 +804,16 @@ Public Class clsWorkEmail
Return False
End If
Try
- If MessageError = False Then
- Dim ins = $"INSERT INTO TBEMLP_HISTORY_ATTACHMENT (WORK_PROCESS,EMAIL_MSGID,EMAIL_FROM,EMAIL_SUBJECT,EMAIL_DATETIME,EMAIL_BODY,EMAIL_ATTMT) VALUES " &
+ If MESSAGE_ERROR = False Then
+ Dim ins = $"INSERT INTO TBEMLP_HISTORY_ATTACHMENT (
+ WORK_PROCESS,
+ EMAIL_MSGID,
+ EMAIL_FROM,
+ EMAIL_SUBJECT,
+ EMAIL_DATETIME,
+ EMAIL_BODY,
+ EMAIL_ATTMT
+ ) VALUES " &
$"('{CurrentMailProcessName}'," &
$"'{pMessageId}'," &
$"'{pCurrentMail.SenderAddress}'," &
@@ -860,7 +884,7 @@ Public Class clsWorkEmail
Return True
Catch ex As Exception
- MessageError = True
+ MESSAGE_ERROR = True
_Logger.Error(ex)
'clsLogger.Add("Unexpected Error in WORK_POLL_STEPS: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True)
Return False
@@ -881,7 +905,7 @@ Public Class clsWorkEmail
Return True
Catch ex As Exception
- MessageError = True
+ MESSAGE_ERROR = True
_Logger.Error(ex)
'clsLogger.Add("Unexpected Error in WORK_INDEXING_STEPS: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True)
Return False
@@ -981,7 +1005,7 @@ Public Class clsWorkEmail
Catch ex As Exception
_Logger.Error(ex)
'clsLogger.Add("Unexpected Error in GET_DOC_INFO: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID)
- MessageError = True
+ MESSAGE_ERROR = True
Return False
End Try
End Function
@@ -999,7 +1023,7 @@ Public Class clsWorkEmail
Next
Return result
Catch ex As Exception
- MessageError = True
+ MESSAGE_ERROR = True
_Logger.Error(ex)
Return Nothing
End Try
diff --git a/App/EmailProfiler.Common/clsWorker.vb b/App/EmailProfiler.Common/clsWorker.vb
index 9ab7587..9ca23bf 100644
--- a/App/EmailProfiler.Common/clsWorker.vb
+++ b/App/EmailProfiler.Common/clsWorker.vb
@@ -1,11 +1,10 @@
Imports DigitalData.EMLProfiler.ClassCurrent
Imports DigitalData.Modules.Logging
-Imports DigitalData.Modules.Messaging
-Imports Limilabs.Mail
-Imports Limilabs.Mail.MIME
-Imports Limilabs.Mail.Headers
Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Messaging.Mail
+Imports Limilabs.Mail
+Imports Limilabs.Mail.Headers
Public Class clsWorker
Private ReadOnly Logger As Logger
@@ -18,6 +17,9 @@ Public Class clsWorker
Private ReadOnly Encryption As clsEncryption
Private ReadOnly ProfileId As Integer = 0D
Private ReadOnly EmailLimitationSender As String = ""
+ Private ReadOnly EmailLimitationEnabled As Boolean = False
+
+ Private ReadOnly LocalEmlFile As String = ""
Sub New(pLogConfig As LogConfig, pConnectionString As String, pWindreamConnectionString As String, pPollProfileId As Integer, pUseWindream As Boolean, pEmailAccountID As Integer, pEmailPrefix As String, pEmailLimitationSender As String, Optional pLocalEML As String = "")
Logger = pLogConfig.GetLogger
@@ -27,6 +29,10 @@ Public Class clsWorker
UseWindream = pUseWindream
EmailLimitationSender = pEmailLimitationSender
+ If EmailLimitationSender.Contains("@") Then
+ Logger.Info("Email Sender Limitation active for address: [{0}]", EmailLimitationSender)
+ EmailLimitationEnabled = True
+ End If
If UseWindream Then
ClassWindreamAllgemein = New clsWindream_allgemein(pLogConfig)
@@ -38,7 +44,7 @@ Public Class clsWorker
Encryption = New clsEncryption("!35452didalog=", pLogConfig)
ProfileId = pPollProfileId
- CURRENT_DEBUG_LOCAL_EMAIL = pLocalEML
+ LocalEmlFile = pLocalEML
End Sub
Private Sub DeleteTempFiles()
@@ -57,184 +63,196 @@ Public Class clsWorker
TEMP_FILES.Clear()
End Sub
+ Private Function LoadEmailAccounts() As DataTable
+ Return Database.GetDatatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1")
+ End Function
+
+ Private Function LoadPollingProfiles(pProfileId As Integer) As DataTable
+ Dim oSQL = "SELECT * FROM TBEMLP_POLL_PROFILES WHERE ACTIVE = 1"
+
+ If ProfileId = 0 Then
+ oSQL &= " ORDER BY SEQUENCE"
+ Else
+ oSQL &= $" WHERE GUID = {pProfileId}"
+ End If
+
+ Return Database.GetDatatable(oSQL)
+ End Function
+
Public Sub Start_WorkingProfiles(Optional LocalEmail As Boolean = False)
Try
DeleteTempFiles()
- If Database.DBInitialized = True Then
- Logger.Debug("now windream_init... ")
- If UseWindream Then
- If ClassWindreamAllgemein.Init = False Then
- Logger.Info("windream could not be initialized!!")
- Exit Sub
- Else
- Logger.Debug("windream_initialized!")
- End If
- End If
- Dim osql As String = "SELECT * FROM TBEMLP_POLL_PROFILES"
- If ProfileId = 0 Then
- osql &= " WHERE ACTIVE = 1 order by SEQUENCE"
- Else
- osql &= " WHERE GUID = " & ProfileId
- End If
- Dim DT_TBDD_EMAIL As DataTable = Database.GetDatatable("SELECT * FROM TBDD_EMAIL_ACCOUNT WHERE ACTIVE = 1")
- Dim DT_PROFILES = Database.GetDatatable(osql)
- If Not IsNothing(DT_PROFILES) Then
- If DT_PROFILES.Rows.Count > 0 Then
- Logger.Debug("count of active profiles: " & DT_PROFILES.Rows.Count.ToString)
- For Each oDR_Profile As DataRow In DT_PROFILES.Rows
- CURRENT_PROFILE_GUID = oDR_Profile.Item("GUID")
- DT_POLL_PROCESS = Nothing
- Dim sql = String.Format("SELECT * FROM TBEMLP_POLL_PROCESS WHERE PROFILE_ID = {0} AND ACTIVE = 1", CURRENT_PROFILE_GUID)
- DT_POLL_PROCESS = Database.GetDatatable(sql)
- If Not IsNothing(DT_POLL_PROCESS) Then
- If DT_POLL_PROCESS.Rows.Count = 0 Then
- Logger.Info("No processes configured for this Email-Profile - " & sql)
- Continue For
- Else
- DT_STEPS = Nothing
- DT_STEPS = Database.GetDatatable(String.Format("SELECT T.* FROM TBEMLP_POLL_STEPS T,TBEMLP_POLL_PROCESS T1 WHERE T.PROCESS_ID = T1.GUID AND T1.PROFILE_ID = {0} AND T1.ACTIVE = 1", CURRENT_PROFILE_GUID))
-
- End If
- Else
- Logger.Warn("DT_POLL_PROCESS is nothing")
- Continue For
- End If
-
- CURRENT_EMAIL_GUID = 0
-
- CURRENT_POLL_TYPE = oDR_Profile.Item("POLL_TYPE")
- Logger.Debug(String.Format("Working on profile: ({0}-{1}-{2}) ", oDR_Profile.Item("GUID"), oDR_Profile.Item("PROFILE_NAME"), CURRENT_POLL_TYPE))
- CURRENT_EMAIL_GUID = oDR_Profile.Item("EMAIL_CONF_ID")
-
- Dim EMAIL_PROF_TABLE As DataTable = DT_TBDD_EMAIL
- 'Presuming the DataTable has a column named Date.
- Dim expression As String
- expression = "GUID = " & CURRENT_EMAIL_GUID
- Logger.Debug("Expression Filter email: " & expression)
- Logger.Debug("DT_TBDD_EMAIL.rowCount: " & DT_TBDD_EMAIL.Rows.Count)
- 'Filter the rows using Select() method of DataTable
- Dim FilteredRows As List(Of DataRow) = EMAIL_PROF_TABLE.Select(expression).ToList()
- If FilteredRows.Count = 1 Then
- Dim oRow = FilteredRows(0)
- Dim MAIL_FROM = oRow("EMAIL_FROM")
- Dim MAIL_SERVER = oRow("EMAIL_SMTP")
- Dim MAIL_USER = oRow("EMAIL_USER")
- Dim MAIL_USER_PW = oRow("EMAIL_PW")
- Dim MAIL_PORT = oRow("PORT_IN")
- Dim MAIL_INBOX_NAME = "Inbox"
- Dim MAIL_ARCHIVE_FOLDER = oRow("ARCHIVE_FOLDER")
- Dim MAIL_AUTHTYPE = oRow("AUTH_TYPE")
- Logger.Debug(String.Format("{0}-{1}", MAIL_FROM, MAIL_SERVER))
-
- Dim PWPlain = Encryption.DecryptData(MAIL_USER_PW)
- If Not IsNothing(PWPlain) Then
- If PWPlain <> "" Then
- MAIL_USER_PW = PWPlain
- Else
- Logger.Warn("PWPlain is string.empty - Could not decrypt passwort")
- End If
- Else
- Logger.Warn("PWPlain is nothing - Could not decrypt passwort")
- End If
-
- CURRENT_WORKMAIL_UID_LIST.Clear()
-
- If MAIL_SERVER <> "" Then
- Dim oPollResult As Boolean = False
- If LocalEmail = True Then
- oPollResult = True
- Else
- Select Case CURRENT_POLL_TYPE
- Case "IMAP"
- ' We are using 'Archive Folder' as an additional field to save the Tenant-ID for O365-OAuth2
- oPollResult = FetchMessages(MAIL_SERVER, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_AUTHTYPE, MAIL_ARCHIVE_FOLDER)
-
- Case Else
- Logger.Error("Poll Type [{0}] is not supported!", CURRENT_POLL_TYPE)
- oPollResult = False
- End Select
- End If
-
- If CURRENT_WORKMAIL_UID_LIST.Count() > 0 Or LocalEmail = True Then
- If LocalEmail Then
- Logger.Info("Working with local Mail")
- Dim oEmail As IMail = New MailBuilder().CreateFromEmlFile(CURRENT_DEBUG_LOCAL_EMAIL)
- ClassWorkMail.WorkEmailMessage(oEmail, 123456789)
- 'CURRENT_MAIL_MESSAGE = Nothing
- Else
- Try
- Logger.Info(String.Format("Pulled: [{0}] E-Mails", CURRENT_WORKMAIL_UID_LIST.Count()))
- Dim LIMIT_EMAIL_FROM As Boolean = False
- If EmailLimitationSender.Contains("@") Then
- LIMIT_EMAIL_FROM = True
- Logger.Info("####################################")
- Logger.Info($"LIMIT_EMAIL_FROM is ACTIVE - EMAIL_FROM = [{EmailLimitationSender}]")
- Logger.Info("####################################")
- Logger.Debug("####################################")
- Logger.Debug($"LIMIT_EMAIL_FROM is ACTIVE - EMAIL_FROM = [{EmailLimitationSender}]")
- Logger.Debug("####################################")
- End If
- For Each oUID In CURRENT_WORKMAIL_UID_LIST
- Dim oEmail As IMail = Fetcher.FetchMail(oUID)
-
- If Not IsNothing(oEmail) Then
- If LIMIT_EMAIL_FROM Then
- Dim oEmailFrom As String = ""
- For Each m As MailBox In oEmail.From
- oEmailFrom = m.Address
- Next
- If oEmailFrom <> EmailLimitationSender Then
- Logger.Debug($"Skipping email {oEmailFrom} ...Subject [{oEmail.Subject}]")
- Continue For
- End If
- End If
- If ClassWorkMail.WorkEmailMessage(oEmail, oUID) = True Then
- If CURRENT_DEBUG_LOCAL_EMAIL = "" Then
- EMAIL_DELETE()
- End If
- End If
-
- Else
- Logger.Info("### oEmail was nothing ###")
- End If
-
- 'CURRENT_MAIL_MESSAGE = Nothing
- Next
- If CURRENT_POLL_TYPE = "IMAP" And CURRENT_WORKMAIL_UID_LIST.Count > 0 Then
- If Not IsNothing(Fetcher.Client) Then
- Fetcher.Client.Close()
- End If
- End If
-
- Catch ex As Exception
- Logger.Error(ex)
- Logger.Warn($"Unexpected Error working CURRENT_WORKMAIL_UID_LIST: {ex.Message} ")
- End Try
-
- End If
- Else
- Logger.Debug(String.Format("No emails for profile!"))
- End If
-
- Else
- Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found!")
- End If
-
- Database.ExecuteNonQuery("UPDATE TBEMLP_POLL_PROFILES SET LAST_TICK = GETDATE() WHERE GUID = " & oDR_Profile.Item("GUID").ToString)
- Else
- Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found! Check wether Email-Profile is active!")
- End If
- Next
- DeleteTempFiles()
-
- Else
- Logger.Info("No active profiles")
- End If
- End If
-
- Database.ExecuteNonQuery("UPDATE TBEMLP_CONFIG SET LAST_TICK = GETDATE() WHERE GUID = 1")
+ If Database.DBInitialized = False Then
+ Logger.Warn("Database is not initialized. Exiting.")
+ Exit Sub
End If
+
+ Logger.Debug("now windream_init... ")
+ If UseWindream Then
+ If ClassWindreamAllgemein.Init = False Then
+ Logger.Info("windream could not be initialized!!")
+ Exit Sub
+ Else
+ Logger.Debug("windream_initialized!")
+ End If
+ End If
+
+ Dim EmailAccountTable As DataTable = LoadEmailAccounts()
+ Dim PollingProfileTable = LoadPollingProfiles(ProfileId)
+
+ If IsNothing(PollingProfileTable) Then
+ Logger.Warn("Error while fetching Polling Profiles. Exiting.")
+ Exit Sub
+ End If
+
+ If PollingProfileTable.Rows.Count = 0 Then
+ Logger.Warn("No active Polling Profiles found. Exiting.")
+ Exit Sub
+ End If
+
+ Logger.Debug("Count of active profiles: " & PollingProfileTable.Rows.Count.ToString)
+
+ For Each oProfile As DataRow In PollingProfileTable.Rows
+
+ Dim oValidationSql = oProfile.ItemEx("VALIDATION_SQL", "")
+
+ CURRENT_PROFILE_GUID = oProfile.Item("GUID")
+ DT_POLL_PROCESS = Nothing
+ Dim sql = String.Format("SELECT * FROM TBEMLP_POLL_PROCESS WHERE PROFILE_ID = {0} AND ACTIVE = 1", CURRENT_PROFILE_GUID)
+ DT_POLL_PROCESS = Database.GetDatatable(sql)
+ If Not IsNothing(DT_POLL_PROCESS) Then
+ If DT_POLL_PROCESS.Rows.Count = 0 Then
+ Logger.Info("No processes configured for this Email-Profile - " & sql)
+ Continue For
+ Else
+ DT_STEPS = Nothing
+ DT_STEPS = Database.GetDatatable($"SELECT T.* FROM TBEMLP_POLL_STEPS T,TBEMLP_POLL_PROCESS T1 WHERE T.PROCESS_ID = T1.GUID AND T1.PROFILE_ID = {CURRENT_PROFILE_GUID} AND T1.ACTIVE = 1")
+
+ End If
+ Else
+ Logger.Warn("DT_POLL_PROCESS is nothing")
+ Continue For
+ End If
+
+ CURRENT_EMAIL_GUID = 0
+
+ CURRENT_POLL_TYPE = oProfile.Item("POLL_TYPE")
+ Logger.Debug(String.Format("Working on profile: ({0}-{1}-{2}) ", oProfile.Item("GUID"), oProfile.Item("PROFILE_NAME"), CURRENT_POLL_TYPE))
+ CURRENT_EMAIL_GUID = oProfile.Item("EMAIL_CONF_ID")
+
+ Dim FilteredRows As List(Of DataRow) = EmailAccountTable.
+ Select($"GUID = {CURRENT_EMAIL_GUID}").
+ ToList()
+ Logger.Debug("FilteredRows: " & FilteredRows.Count)
+
+ If FilteredRows.Count = 1 Then
+ Dim oRow = FilteredRows(0)
+ Dim oMailFrom = oRow("EMAIL_FROM")
+ Dim oMailServer = oRow("EMAIL_SMTP")
+ Dim oMailUser = oRow("EMAIL_USER")
+ Dim oMailPassword = oRow("EMAIL_PW")
+ Dim oMailPortIn = oRow("PORT_IN")
+ Dim oMailboxName = "Inbox"
+ Dim oMailArchiveFolder = oRow("ARCHIVE_FOLDER")
+ Dim oMailAuthType = oRow("AUTH_TYPE")
+
+ Logger.Debug("Mail Server: {0}", oMailServer)
+ Logger.Debug("Mail From: {0}", oMailFrom)
+
+ Dim PWPlain = Encryption.DecryptData(oMailPassword)
+ If Not IsNothing(PWPlain) Then
+ If PWPlain <> "" Then
+ oMailPassword = PWPlain
+ Else
+ Logger.Warn("PWPlain is string.empty - Could not decrypt passwort")
+ End If
+ Else
+ Logger.Warn("PWPlain is nothing - Could not decrypt passwort")
+ End If
+
+ CURRENT_WORKMAIL_UID_LIST.Clear()
+
+ If oMailServer <> "" Then
+ Dim oPollResult As Boolean = False
+ If LocalEmail = True Then
+ oPollResult = True
+ Else
+ Select Case CURRENT_POLL_TYPE
+ Case "IMAP"
+ ' We are using 'Archive Folder' as an additional field to save the Tenant-ID for O365-OAuth2
+ oPollResult = FetchMessages(oMailServer, oMailPortIn, oMailUser, oMailPassword, oMailAuthType, oMailArchiveFolder)
+
+ Case Else
+ Logger.Error("Poll Type [{0}] is not supported!", CURRENT_POLL_TYPE)
+ oPollResult = False
+ End Select
+ End If
+
+ If CURRENT_WORKMAIL_UID_LIST.Count() > 0 Or LocalEmail = True Then
+ If LocalEmail Then
+ Logger.Info("Working with local Mail")
+ Dim oEmail As IMail = New MailBuilder().CreateFromEmlFile(LocalEmlFile)
+ ClassWorkMail.WorkEmailMessage(oEmail, 123456789, oValidationSql)
+ 'CURRENT_MAIL_MESSAGE = Nothing
+ Else
+ Try
+ Logger.Info(String.Format("Pulled: [{0}] E-Mails", CURRENT_WORKMAIL_UID_LIST.Count()))
+
+ For Each oMailId In CURRENT_WORKMAIL_UID_LIST
+ Dim oEmail As IMail = Fetcher.FetchMail(oMailId)
+
+ If Not IsNothing(oEmail) Then
+ If EmailLimitationEnabled Then
+ Dim oEmailFrom As String = ""
+ For Each m As MailBox In oEmail.From
+ oEmailFrom = m.Address
+ Next
+ If oEmailFrom <> EmailLimitationSender Then
+ Logger.Debug($"Skipping email {oEmailFrom} ...Subject [{oEmail.Subject}]")
+ Continue For
+ End If
+ End If
+ If ClassWorkMail.WorkEmailMessage(oEmail, oMailId, oValidationSql) = True Then
+ If LocalEmlFile = "" Then
+ DeleteEmailFile(oMailId)
+ End If
+ End If
+
+ Else
+ Logger.Info("### oEmail was nothing ###")
+ End If
+
+ 'CURRENT_MAIL_MESSAGE = Nothing
+ Next
+
+ If CURRENT_POLL_TYPE = "IMAP" And CURRENT_WORKMAIL_UID_LIST.Count > 0 Then
+ Fetcher.Disconnect()
+ End If
+
+ Catch ex As Exception
+ Logger.Error(ex)
+ Logger.Warn($"Unexpected Error working CURRENT_WORKMAIL_UID_LIST: {ex.Message} ")
+ End Try
+
+ End If
+ Else
+ Logger.Debug(String.Format("No emails for profile!"))
+ End If
+
+ Else
+ Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found!")
+ End If
+
+ Database.ExecuteNonQuery("UPDATE TBEMLP_POLL_PROFILES SET LAST_TICK = GETDATE() WHERE GUID = " & oProfile.Item("GUID").ToString)
+ Else
+ Logger.Warn("For the Email-Profile ID " & CURRENT_EMAIL_GUID & " no record could be found! Check wether Email-Profile is active!")
+ End If
+ Next
+
+ DeleteTempFiles()
+
+ Database.ExecuteNonQuery("UPDATE TBEMLP_CONFIG SET LAST_TICK = GETDATE() WHERE GUID = 1")
Catch ex As Exception
Logger.Error(ex)
End Try
@@ -280,27 +298,26 @@ Public Class clsWorker
CURRENT_WORKMAIL_UID_LIST = oMailIds
- Fetcher.Disconnect()
-
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
+
End Try
End Function
- Private Sub EMAIL_DELETE()
+ Private Sub DeleteEmailFile(pMailId As Integer)
Try
- If DeleteMail = True And MessageError = False Then
+ If DeleteMail = True And MESSAGE_ERROR = False Then
If IsNothing(Fetcher.Client) Then
Logger.Warn("EMAIL_DELETE - CURRENT_ImapObject is nothing")
End If
- Fetcher.Client.DeleteMessageByUID(CURRENT_MAIL_UID)
- Logger.Info("Email with Id [{0}] was deleted.", CURRENT_MAIL_UID)
+ Fetcher.Client.DeleteMessageByUID(pMailId)
+ Logger.Info("Email with Id [{0}] was deleted.", pMailId)
Else
- If MessageError = True Then
- Logger.Warn("Did not delete Message with UID [{0}] as there was an MessageError!", CURRENT_MAIL_UID)
+ If MESSAGE_ERROR = True Then
+ Logger.Warn("Did not delete Message with UID [{0}] as there was an MessageError!", pMailId)
End If
End If
Catch ex As Exception
diff --git a/App/EmailProfiler.Form/App.config b/App/EmailProfiler.Form/App.config
index 6c4ac76..fad3da9 100644
--- a/App/EmailProfiler.Form/App.config
+++ b/App/EmailProfiler.Form/App.config
@@ -10,7 +10,7 @@
@@ -27,7 +27,7 @@
- Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd
+ Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd
diff --git a/App/EmailProfiler.Form/EmailProfiler.Form.vbproj b/App/EmailProfiler.Form/EmailProfiler.Form.vbproj
index ce3d6de..7f3cfba 100644
--- a/App/EmailProfiler.Form/EmailProfiler.Form.vbproj
+++ b/App/EmailProfiler.Form/EmailProfiler.Form.vbproj
@@ -60,6 +60,10 @@
+
+ False
+ ..\..\..\DDMonorepo\GUIs.Common\bin\Debug\DigitalData.GUIs.Common.dll
+
False
..\..\..\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll
@@ -140,6 +144,9 @@
True
MyDataset.xsd
+
+ MyDataset.xsd
+
diff --git a/App/EmailProfiler.Form/My Project/Settings.Designer.vb b/App/EmailProfiler.Form/My Project/Settings.Designer.vb
index 8c0d39d..2e77097 100644
--- a/App/EmailProfiler.Form/My Project/Settings.Designer.vb
+++ b/App/EmailProfiler.Form/My Project/Settings.Designer.vb
@@ -56,8 +56,8 @@ Namespace My
_
+ Global.System.Configuration.DefaultSettingValueAttribute("Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security "& _
+ "Info=True;User ID=sa;Password=dd")> _
Public Property MyConnectionString() As String
Get
Return CType(Me("MyConnectionString"),String)
@@ -172,8 +172,8 @@ Namespace My
_
+ Global.System.Configuration.DefaultSettingValueAttribute("Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security "& _
+ "Info=True;User ID=sa;Password=dd")> _
Public ReadOnly Property MyDatasetConnString() As String
Get
Return CType(Me("MyDatasetConnString"),String)
diff --git a/App/EmailProfiler.Form/My Project/Settings.settings b/App/EmailProfiler.Form/My Project/Settings.settings
index e99dce9..0523ae1 100644
--- a/App/EmailProfiler.Form/My Project/Settings.settings
+++ b/App/EmailProfiler.Form/My Project/Settings.settings
@@ -3,7 +3,7 @@
- Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd
+ Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd
@@ -38,10 +38,10 @@
<?xml version="1.0" encoding="utf-16"?>
<SerializableConnectionString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <ConnectionString>Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd</ConnectionString>
+ <ConnectionString>Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd</ConnectionString>
<ProviderName>System.Data.SqlClient</ProviderName>
</SerializableConnectionString>
- Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd
+ Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd
\ No newline at end of file
diff --git a/App/EmailProfiler.Form/My Project/licenses.licx b/App/EmailProfiler.Form/My Project/licenses.licx
index 7f629a5..81285e2 100644
--- a/App/EmailProfiler.Form/My Project/licenses.licx
+++ b/App/EmailProfiler.Form/My Project/licenses.licx
@@ -1,2 +1,3 @@
-DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
diff --git a/App/EmailProfiler.Form/MyDataset.Designer.vb b/App/EmailProfiler.Form/MyDataset.Designer.vb
index ae60be5..da4646d 100644
--- a/App/EmailProfiler.Form/MyDataset.Designer.vb
+++ b/App/EmailProfiler.Form/MyDataset.Designer.vb
@@ -532,6 +532,8 @@ Partial Public Class MyDataset
Private columnCHANGED_WHEN As Global.System.Data.DataColumn
+ Private columnVALIDATION_SQL As Global.System.Data.DataColumn
+
_
Public Sub New()
@@ -663,6 +665,14 @@ Partial Public Class MyDataset
End Get
End Property
+ _
+ Public ReadOnly Property VALIDATION_SQLColumn() As Global.System.Data.DataColumn
+ Get
+ Return Me.columnVALIDATION_SQL
+ End Get
+ End Property
+
_
@@ -700,9 +710,9 @@ Partial Public Class MyDataset
_
- Public Overloads Function AddTBEMLP_POLL_PROFILESRow(ByVal PROFILE_NAME As String, ByVal POLL_TYPE As String, ByVal EMAIL_CONF_ID As Integer, ByVal COMMENT As String, ByVal LAST_TICK As Date, ByVal ACTIVE As Boolean, ByVal SEQUENCE As Integer, ByVal ADDED_WHO As String, ByVal ADDED_WHEN As Date, ByVal CHANGED_WHO As String, ByVal CHANGED_WHEN As Date) As TBEMLP_POLL_PROFILESRow
+ Public Overloads Function AddTBEMLP_POLL_PROFILESRow(ByVal PROFILE_NAME As String, ByVal POLL_TYPE As String, ByVal EMAIL_CONF_ID As Integer, ByVal COMMENT As String, ByVal LAST_TICK As Date, ByVal ACTIVE As Boolean, ByVal SEQUENCE As Integer, ByVal ADDED_WHO As String, ByVal ADDED_WHEN As Date, ByVal CHANGED_WHO As String, ByVal CHANGED_WHEN As Date, ByVal VALIDATION_SQL As String) As TBEMLP_POLL_PROFILESRow
Dim rowTBEMLP_POLL_PROFILESRow As TBEMLP_POLL_PROFILESRow = CType(Me.NewRow,TBEMLP_POLL_PROFILESRow)
- Dim columnValuesArray() As Object = New Object() {Nothing, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN}
+ Dim columnValuesArray() As Object = New Object() {Nothing, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN, VALIDATION_SQL}
rowTBEMLP_POLL_PROFILESRow.ItemArray = columnValuesArray
Me.Rows.Add(rowTBEMLP_POLL_PROFILESRow)
Return rowTBEMLP_POLL_PROFILESRow
@@ -743,6 +753,7 @@ Partial Public Class MyDataset
Me.columnADDED_WHEN = MyBase.Columns("ADDED_WHEN")
Me.columnCHANGED_WHO = MyBase.Columns("CHANGED_WHO")
Me.columnCHANGED_WHEN = MyBase.Columns("CHANGED_WHEN")
+ Me.columnVALIDATION_SQL = MyBase.Columns("VALIDATION_SQL")
End Sub
_
+ Public Property VALIDATION_SQL() As String
+ Get
+ Try
+ Return CType(Me(Me.tableTBEMLP_POLL_PROFILES.VALIDATION_SQLColumn),String)
+ Catch e As Global.System.InvalidCastException
+ Throw New Global.System.Data.StrongTypingException("Der Wert für Spalte VALIDATION_SQL in Tabelle TBEMLP_POLL_PROFILES ist DBNull.", e)
+ End Try
+ End Get
+ Set
+ Me(Me.tableTBEMLP_POLL_PROFILES.VALIDATION_SQLColumn) = value
+ End Set
+ End Property
+
_
Public Function IsCOMMENTNull() As Boolean
@@ -3885,6 +3913,18 @@ Partial Public Class MyDataset
Me(Me.tableTBEMLP_POLL_PROFILES.CHANGED_WHENColumn) = Global.System.Convert.DBNull
End Sub
+ _
+ Public Function IsVALIDATION_SQLNull() As Boolean
+ Return Me.IsNull(Me.tableTBEMLP_POLL_PROFILES.VALIDATION_SQLColumn)
+ End Function
+
+ _
+ Public Sub SetVALIDATION_SQLNull()
+ Me(Me.tableTBEMLP_POLL_PROFILES.VALIDATION_SQLColumn) = Global.System.Convert.DBNull
+ End Sub
+
_
Public Function GetTBEMLP_POLL_PROCESSRows() As TBEMLP_POLL_PROCESSRow()
@@ -6027,6 +6067,7 @@ Namespace MyDatasetTableAdapters
tableMapping.ColumnMappings.Add("ADDED_WHEN", "ADDED_WHEN")
tableMapping.ColumnMappings.Add("CHANGED_WHO", "CHANGED_WHO")
tableMapping.ColumnMappings.Add("CHANGED_WHEN", "CHANGED_WHEN")
+ tableMapping.ColumnMappings.Add("VALIDATION_SQL", "VALIDATION_SQL")
Me._adapter.TableMappings.Add(tableMapping)
Me._adapter.DeleteCommand = New Global.System.Data.SqlClient.SqlCommand()
Me._adapter.DeleteCommand.Connection = Me.Connection
@@ -6065,11 +6106,12 @@ Namespace MyDatasetTableAdapters
Me._adapter.InsertCommand = New Global.System.Data.SqlClient.SqlCommand()
Me._adapter.InsertCommand.Connection = Me.Connection
Me._adapter.InsertCommand.CommandText = "INSERT INTO TBEMLP_POLL_PROFILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" (PROFILE_NAME, POLL_TY"& _
- "PE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"VALUES "& _
- " (@PROFILE_NAME,@POLL_TYPE,@EMAIL_CONF_ID,@COMMENT,@LAST_TICK,@ACTIVE,@SEQUENC"& _
- "E,@ADDED_WHO); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, L"& _
- "AST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FRO"& _
- "M TBEMLP_POLL_PROFILES WHERE (GUID = SCOPE_IDENTITY())"
+ "PE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, VALIDATION_S"& _
+ "QL)"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"VALUES (@PROFILE_NAME,@POLL_TYPE,@EMAIL_CONF_ID,@COMMENT,@LAST_TICK,"& _
+ "@ACTIVE,@SEQUENCE,@ADDED_WHO,@VALIDATION_SQL); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT GUID, PROFILE_NAME, POL"& _
+ "L_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WH"& _
+ "EN, CHANGED_WHO, CHANGED_WHEN FROM TBEMLP_POLL_PROFILES WHERE (GUID = SCOPE_IDEN"& _
+ "TITY())"
Me._adapter.InsertCommand.CommandType = Global.System.Data.CommandType.Text
Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@PROFILE_NAME", Global.System.Data.SqlDbType.VarChar, 100, Global.System.Data.ParameterDirection.Input, 0, 0, "PROFILE_NAME", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", ""))
Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@POLL_TYPE", Global.System.Data.SqlDbType.VarChar, 100, Global.System.Data.ParameterDirection.Input, 0, 0, "POLL_TYPE", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", ""))
@@ -6079,15 +6121,16 @@ Namespace MyDatasetTableAdapters
Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@ACTIVE", Global.System.Data.SqlDbType.Bit, 1, Global.System.Data.ParameterDirection.Input, 0, 0, "ACTIVE", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", ""))
Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@SEQUENCE", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "SEQUENCE", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", ""))
Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@ADDED_WHO", Global.System.Data.SqlDbType.VarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "ADDED_WHO", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", ""))
+ Me._adapter.InsertCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@VALIDATION_SQL", Global.System.Data.SqlDbType.[Variant], 1024, Global.System.Data.ParameterDirection.Input, 0, 0, "VALIDATION_SQL", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", ""))
Me._adapter.UpdateCommand = New Global.System.Data.SqlClient.SqlCommand()
Me._adapter.UpdateCommand.Connection = Me.Connection
Me._adapter.UpdateCommand.CommandText = "UPDATE TBEMLP_POLL_PROFILES"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SET PROFILE_NAME = @PROFILE_NAM"& _
"E, POLL_TYPE = @POLL_TYPE, EMAIL_CONF_ID = @EMAIL_CONF_ID, COMMENT = @COMMENT, L"& _
"AST_TICK = @LAST_TICK, ACTIVE = @ACTIVE, SEQUENCE = @SEQUENCE, "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&" "& _
- " CHANGED_WHO = @CHANGED_WHO"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE (GUID = @Original_GUID); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SE"& _
- "LECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, S"& _
- "EQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FROM TBEMLP_POLL_PROFI"& _
- "LES WHERE (GUID = @GUID)"
+ " CHANGED_WHO = @CHANGED_WHO, VALIDATION_SQL = @VALIDATION_SQL"&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"WHERE "& _
+ " (GUID = @Original_GUID); "&Global.Microsoft.VisualBasic.ChrW(13)&Global.Microsoft.VisualBasic.ChrW(10)&"SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CO"& _
+ "NF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO,"& _
+ " CHANGED_WHEN FROM TBEMLP_POLL_PROFILES WHERE (GUID = @GUID)"
Me._adapter.UpdateCommand.CommandType = Global.System.Data.CommandType.Text
Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@PROFILE_NAME", Global.System.Data.SqlDbType.VarChar, 100, Global.System.Data.ParameterDirection.Input, 0, 0, "PROFILE_NAME", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", ""))
Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@POLL_TYPE", Global.System.Data.SqlDbType.VarChar, 100, Global.System.Data.ParameterDirection.Input, 0, 0, "POLL_TYPE", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", ""))
@@ -6097,6 +6140,7 @@ Namespace MyDatasetTableAdapters
Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@ACTIVE", Global.System.Data.SqlDbType.Bit, 1, Global.System.Data.ParameterDirection.Input, 0, 0, "ACTIVE", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", ""))
Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@SEQUENCE", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "SEQUENCE", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", ""))
Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@CHANGED_WHO", Global.System.Data.SqlDbType.VarChar, 50, Global.System.Data.ParameterDirection.Input, 0, 0, "CHANGED_WHO", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", ""))
+ Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@VALIDATION_SQL", Global.System.Data.SqlDbType.NVarChar, 1024, Global.System.Data.ParameterDirection.Input, 0, 0, "VALIDATION_SQL", Global.System.Data.DataRowVersion.Current, false, Nothing, "", "", ""))
Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@Original_GUID", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "GUID", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", ""))
Me._adapter.UpdateCommand.Parameters.Add(New Global.System.Data.SqlClient.SqlParameter("@GUID", Global.System.Data.SqlDbType.Int, 4, Global.System.Data.ParameterDirection.Input, 0, 0, "GUID", Global.System.Data.DataRowVersion.Original, false, Nothing, "", "", ""))
End Sub
@@ -6256,7 +6300,7 @@ Namespace MyDatasetTableAdapters
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0"), _
Global.System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter"), _
Global.System.ComponentModel.DataObjectMethodAttribute(Global.System.ComponentModel.DataObjectMethodType.Insert, true)> _
- Public Overloads Overridable Function Insert(ByVal PROFILE_NAME As String, ByVal POLL_TYPE As String, ByVal EMAIL_CONF_ID As Integer, ByVal COMMENT As String, ByVal LAST_TICK As Global.System.Nullable(Of Date), ByVal ACTIVE As Boolean, ByVal SEQUENCE As Global.System.Nullable(Of Integer), ByVal ADDED_WHO As String) As Integer
+ Public Overloads Overridable Function Insert(ByVal PROFILE_NAME As String, ByVal POLL_TYPE As String, ByVal EMAIL_CONF_ID As Integer, ByVal COMMENT As String, ByVal LAST_TICK As Global.System.Nullable(Of Date), ByVal ACTIVE As Boolean, ByVal SEQUENCE As Global.System.Nullable(Of Integer), ByVal ADDED_WHO As String, ByVal VALIDATION_SQL As Object) As Integer
If (PROFILE_NAME Is Nothing) Then
Throw New Global.System.ArgumentNullException("PROFILE_NAME")
Else
@@ -6289,6 +6333,11 @@ Namespace MyDatasetTableAdapters
Else
Me.Adapter.InsertCommand.Parameters(7).Value = CType(ADDED_WHO,String)
End If
+ If (VALIDATION_SQL Is Nothing) Then
+ Throw New Global.System.ArgumentNullException("VALIDATION_SQL")
+ Else
+ Me.Adapter.InsertCommand.Parameters(8).Value = CType(VALIDATION_SQL,Object)
+ End If
Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.InsertCommand.Connection.State
If ((Me.Adapter.InsertCommand.Connection.State And Global.System.Data.ConnectionState.Open) _
<> Global.System.Data.ConnectionState.Open) Then
@@ -6308,7 +6357,7 @@ Namespace MyDatasetTableAdapters
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0"), _
Global.System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter"), _
Global.System.ComponentModel.DataObjectMethodAttribute(Global.System.ComponentModel.DataObjectMethodType.Update, true)> _
- Public Overloads Overridable Function Update(ByVal PROFILE_NAME As String, ByVal POLL_TYPE As String, ByVal EMAIL_CONF_ID As Integer, ByVal COMMENT As String, ByVal LAST_TICK As Global.System.Nullable(Of Date), ByVal ACTIVE As Boolean, ByVal SEQUENCE As Global.System.Nullable(Of Integer), ByVal CHANGED_WHO As String, ByVal Original_GUID As Integer, ByVal GUID As Integer) As Integer
+ Public Overloads Overridable Function Update(ByVal PROFILE_NAME As String, ByVal POLL_TYPE As String, ByVal EMAIL_CONF_ID As Integer, ByVal COMMENT As String, ByVal LAST_TICK As Global.System.Nullable(Of Date), ByVal ACTIVE As Boolean, ByVal SEQUENCE As Global.System.Nullable(Of Integer), ByVal CHANGED_WHO As String, ByVal VALIDATION_SQL As String, ByVal Original_GUID As Integer, ByVal GUID As Integer) As Integer
If (PROFILE_NAME Is Nothing) Then
Throw New Global.System.ArgumentNullException("PROFILE_NAME")
Else
@@ -6341,8 +6390,13 @@ Namespace MyDatasetTableAdapters
Else
Me.Adapter.UpdateCommand.Parameters(7).Value = CType(CHANGED_WHO,String)
End If
- Me.Adapter.UpdateCommand.Parameters(8).Value = CType(Original_GUID,Integer)
- Me.Adapter.UpdateCommand.Parameters(9).Value = CType(GUID,Integer)
+ If (VALIDATION_SQL Is Nothing) Then
+ Throw New Global.System.ArgumentNullException("VALIDATION_SQL")
+ Else
+ Me.Adapter.UpdateCommand.Parameters(8).Value = CType(VALIDATION_SQL,String)
+ End If
+ Me.Adapter.UpdateCommand.Parameters(9).Value = CType(Original_GUID,Integer)
+ Me.Adapter.UpdateCommand.Parameters(10).Value = CType(GUID,Integer)
Dim previousConnectionState As Global.System.Data.ConnectionState = Me.Adapter.UpdateCommand.Connection.State
If ((Me.Adapter.UpdateCommand.Connection.State And Global.System.Data.ConnectionState.Open) _
<> Global.System.Data.ConnectionState.Open) Then
diff --git a/App/EmailProfiler.Form/MyDataset.vb b/App/EmailProfiler.Form/MyDataset.vb
new file mode 100644
index 0000000..58e31fa
--- /dev/null
+++ b/App/EmailProfiler.Form/MyDataset.vb
@@ -0,0 +1,4 @@
+Partial Class MyDataset
+ Partial Public Class TBEMLP_POLL_PROFILESDataTable
+ End Class
+End Class
diff --git a/App/EmailProfiler.Form/MyDataset.xsd b/App/EmailProfiler.Form/MyDataset.xsd
index 19836ef..042b3dd 100644
--- a/App/EmailProfiler.Form/MyDataset.xsd
+++ b/App/EmailProfiler.Form/MyDataset.xsd
@@ -39,8 +39,8 @@
INSERT INTO TBEMLP_POLL_PROFILES
- (PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO)
-VALUES (@PROFILE_NAME,@POLL_TYPE,@EMAIL_CONF_ID,@COMMENT,@LAST_TICK,@ACTIVE,@SEQUENCE,@ADDED_WHO);
+ (PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, VALIDATION_SQL)
+VALUES (@PROFILE_NAME,@POLL_TYPE,@EMAIL_CONF_ID,@COMMENT,@LAST_TICK,@ACTIVE,@SEQUENCE,@ADDED_WHO,@VALIDATION_SQL);
SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FROM TBEMLP_POLL_PROFILES WHERE (GUID = SCOPE_IDENTITY())
@@ -51,6 +51,7 @@ SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE,
+
@@ -65,8 +66,8 @@ FROM TBEMLP_POLL_PROFILES
UPDATE TBEMLP_POLL_PROFILES
SET PROFILE_NAME = @PROFILE_NAME, POLL_TYPE = @POLL_TYPE, EMAIL_CONF_ID = @EMAIL_CONF_ID, COMMENT = @COMMENT, LAST_TICK = @LAST_TICK, ACTIVE = @ACTIVE, SEQUENCE = @SEQUENCE,
- CHANGED_WHO = @CHANGED_WHO
-WHERE (GUID = @Original_GUID);
+ CHANGED_WHO = @CHANGED_WHO, VALIDATION_SQL = @VALIDATION_SQL
+WHERE (GUID = @Original_GUID);
SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE, SEQUENCE, ADDED_WHO, ADDED_WHEN, CHANGED_WHO, CHANGED_WHEN FROM TBEMLP_POLL_PROFILES WHERE (GUID = @GUID)
@@ -77,6 +78,7 @@ SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE,
+
@@ -97,6 +99,7 @@ SELECT GUID, PROFILE_NAME, POLL_TYPE, EMAIL_CONF_ID, COMMENT, LAST_TICK, ACTIVE,
+
@@ -602,162 +605,163 @@ SELECT GUID, NAME, EMAIL_FROM, EMAIL_SMTP, EMAIL_USER, EMAIL_PW, PORT, ACTIVE, A
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
+
+
-
+
-
-
+
+
-
+
-
-
-
-
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -767,266 +771,266 @@ SELECT GUID, NAME, EMAIL_FROM, EMAIL_SMTP, EMAIL_USER, EMAIL_PW, PORT, ACTIVE, A
-
+
-
-
-
+
+
+
-
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
+
-
-
-
+
+
+
-
+
-
-
-
-
+
+
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
-
-
+
+
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
@@ -1069,9 +1073,9 @@ SELECT GUID, NAME, EMAIL_FROM, EMAIL_SMTP, EMAIL_USER, EMAIL_PW, PORT, ACTIVE, A
-
-
-
+
+
+
\ No newline at end of file
diff --git a/App/EmailProfiler.Form/frmMain.Designer.vb b/App/EmailProfiler.Form/frmMain.Designer.vb
index 36b7a3c..c11074f 100644
--- a/App/EmailProfiler.Form/frmMain.Designer.vb
+++ b/App/EmailProfiler.Form/frmMain.Designer.vb
@@ -77,6 +77,7 @@ Partial Class frmMain
Dim CHANGED_WHENLabel5 As System.Windows.Forms.Label
Dim PORT_INLabel As System.Windows.Forms.Label
Dim AUTH_TYPELabel As System.Windows.Forms.Label
+ Dim Label11 As System.Windows.Forms.Label
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain))
Me.EMAIL_SMTPLabel = New System.Windows.Forms.Label()
Me.EMAIL_USERLabel = New System.Windows.Forms.Label()
@@ -88,6 +89,8 @@ Partial Class frmMain
Me.ToolStripStatusLabel1 = New System.Windows.Forms.ToolStripStatusLabel()
Me.TabControl1 = New System.Windows.Forms.TabControl()
Me.tabProfile = New System.Windows.Forms.TabPage()
+ Me.txtSQLValidation = New DevExpress.XtraEditors.TextEdit()
+ Me.btnValidationSQL = New DevExpress.XtraEditors.SimpleButton()
Me.GridControl4 = New DevExpress.XtraGrid.GridControl()
Me.TBEMLP_POLL_PROFILESBindingSource = New System.Windows.Forms.BindingSource(Me.components)
Me.MyDataset = New EmailProfiler.Form.MyDataset()
@@ -380,9 +383,11 @@ Partial Class frmMain
CHANGED_WHENLabel5 = New System.Windows.Forms.Label()
PORT_INLabel = New System.Windows.Forms.Label()
AUTH_TYPELabel = New System.Windows.Forms.Label()
+ Label11 = New System.Windows.Forms.Label()
Me.StatusStrip1.SuspendLayout()
Me.TabControl1.SuspendLayout()
Me.tabProfile.SuspendLayout()
+ CType(Me.txtSQLValidation.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridControl4, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.TBEMLP_POLL_PROFILESBindingSource, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.MyDataset, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -853,24 +858,6 @@ Partial Class frmMain
EMAIL_FROMLabel.TabIndex = 38
EMAIL_FROMLabel.Text = "Email from:"
'
- 'EMAIL_SMTPLabel
- '
- Me.EMAIL_SMTPLabel.AutoSize = True
- Me.EMAIL_SMTPLabel.Location = New System.Drawing.Point(698, 68)
- Me.EMAIL_SMTPLabel.Name = "EMAIL_SMTPLabel"
- Me.EMAIL_SMTPLabel.Size = New System.Drawing.Size(43, 13)
- Me.EMAIL_SMTPLabel.TabIndex = 40
- Me.EMAIL_SMTPLabel.Text = "Server:"
- '
- 'EMAIL_USERLabel
- '
- Me.EMAIL_USERLabel.AutoSize = True
- Me.EMAIL_USERLabel.Location = New System.Drawing.Point(370, 108)
- Me.EMAIL_USERLabel.Name = "EMAIL_USERLabel"
- Me.EMAIL_USERLabel.Size = New System.Drawing.Size(80, 13)
- Me.EMAIL_USERLabel.TabIndex = 42
- Me.EMAIL_USERLabel.Text = "Benutzername:"
- '
'PORTLabel
'
PORTLabel.AutoSize = True
@@ -916,15 +903,6 @@ Partial Class frmMain
CHANGED_WHENLabel5.TabIndex = 56
CHANGED_WHENLabel5.Text = "Changed when:"
'
- 'EMAIL_PWLabel
- '
- Me.EMAIL_PWLabel.AutoSize = True
- Me.EMAIL_PWLabel.Location = New System.Drawing.Point(735, 108)
- Me.EMAIL_PWLabel.Name = "EMAIL_PWLabel"
- Me.EMAIL_PWLabel.Size = New System.Drawing.Size(88, 13)
- Me.EMAIL_PWLabel.TabIndex = 64
- Me.EMAIL_PWLabel.Text = "Neues Passwort:"
- '
'PORT_INLabel
'
PORT_INLabel.AutoSize = True
@@ -934,15 +912,6 @@ Partial Class frmMain
PORT_INLabel.TabIndex = 70
PORT_INLabel.Text = "Port in:"
'
- 'ARCHIVE_FOLDERLabel
- '
- Me.ARCHIVE_FOLDERLabel.AutoSize = True
- Me.ARCHIVE_FOLDERLabel.Location = New System.Drawing.Point(828, 148)
- Me.ARCHIVE_FOLDERLabel.Name = "ARCHIVE_FOLDERLabel"
- Me.ARCHIVE_FOLDERLabel.Size = New System.Drawing.Size(84, 13)
- Me.ARCHIVE_FOLDERLabel.TabIndex = 76
- Me.ARCHIVE_FOLDERLabel.Text = "Archive Ordner:"
- '
'AUTH_TYPELabel
'
AUTH_TYPELabel.AutoSize = True
@@ -952,6 +921,51 @@ Partial Class frmMain
AUTH_TYPELabel.TabIndex = 78
AUTH_TYPELabel.Text = "Verbindungssicherheit:"
'
+ 'Label11
+ '
+ Label11.AutoSize = True
+ Label11.Location = New System.Drawing.Point(318, 108)
+ Label11.Name = "Label11"
+ Label11.Size = New System.Drawing.Size(90, 13)
+ Label11.TabIndex = 12
+ Label11.Text = "Validierungs SQL:"
+ '
+ 'EMAIL_SMTPLabel
+ '
+ Me.EMAIL_SMTPLabel.AutoSize = True
+ Me.EMAIL_SMTPLabel.Location = New System.Drawing.Point(698, 68)
+ Me.EMAIL_SMTPLabel.Name = "EMAIL_SMTPLabel"
+ Me.EMAIL_SMTPLabel.Size = New System.Drawing.Size(43, 13)
+ Me.EMAIL_SMTPLabel.TabIndex = 40
+ Me.EMAIL_SMTPLabel.Text = "Server:"
+ '
+ 'EMAIL_USERLabel
+ '
+ Me.EMAIL_USERLabel.AutoSize = True
+ Me.EMAIL_USERLabel.Location = New System.Drawing.Point(370, 108)
+ Me.EMAIL_USERLabel.Name = "EMAIL_USERLabel"
+ Me.EMAIL_USERLabel.Size = New System.Drawing.Size(80, 13)
+ Me.EMAIL_USERLabel.TabIndex = 42
+ Me.EMAIL_USERLabel.Text = "Benutzername:"
+ '
+ 'EMAIL_PWLabel
+ '
+ Me.EMAIL_PWLabel.AutoSize = True
+ Me.EMAIL_PWLabel.Location = New System.Drawing.Point(735, 108)
+ Me.EMAIL_PWLabel.Name = "EMAIL_PWLabel"
+ Me.EMAIL_PWLabel.Size = New System.Drawing.Size(88, 13)
+ Me.EMAIL_PWLabel.TabIndex = 64
+ Me.EMAIL_PWLabel.Text = "Neues Passwort:"
+ '
+ 'ARCHIVE_FOLDERLabel
+ '
+ Me.ARCHIVE_FOLDERLabel.AutoSize = True
+ Me.ARCHIVE_FOLDERLabel.Location = New System.Drawing.Point(828, 148)
+ Me.ARCHIVE_FOLDERLabel.Name = "ARCHIVE_FOLDERLabel"
+ Me.ARCHIVE_FOLDERLabel.Size = New System.Drawing.Size(84, 13)
+ Me.ARCHIVE_FOLDERLabel.TabIndex = 76
+ Me.ARCHIVE_FOLDERLabel.Text = "Archive Ordner:"
+ '
'StatusStrip1
'
Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tslblstatus, Me.tslblRefresh, Me.ToolStripStatusLabel1})
@@ -991,6 +1005,8 @@ Partial Class frmMain
'tabProfile
'
Me.tabProfile.AutoScroll = True
+ Me.tabProfile.Controls.Add(Me.txtSQLValidation)
+ Me.tabProfile.Controls.Add(Me.btnValidationSQL)
Me.tabProfile.Controls.Add(Me.GridControl4)
Me.tabProfile.Controls.Add(Me.ComboBox1)
Me.tabProfile.Controls.Add(Me.BindingNavigator1)
@@ -1005,6 +1021,7 @@ Partial Class frmMain
Me.tabProfile.Controls.Add(PROFILE_NAMELabel)
Me.tabProfile.Controls.Add(CHANGED_WHENLabel)
Me.tabProfile.Controls.Add(Me.PROFILE_NAMETextBox)
+ Me.tabProfile.Controls.Add(Label11)
Me.tabProfile.Controls.Add(COMMENTLabel)
Me.tabProfile.Controls.Add(Me.CHANGED_WHENTextBox)
Me.tabProfile.Controls.Add(Me.COMMENTTextBox)
@@ -1021,6 +1038,22 @@ Partial Class frmMain
Me.tabProfile.Text = "Profilkonfiguration"
Me.tabProfile.UseVisualStyleBackColor = True
'
+ 'txtSQLValidation
+ '
+ Me.txtSQLValidation.DataBindings.Add(New System.Windows.Forms.Binding("EditValue", Me.TBEMLP_POLL_PROFILESBindingSource, "VALIDATION_SQL", True))
+ Me.txtSQLValidation.Location = New System.Drawing.Point(321, 124)
+ Me.txtSQLValidation.Name = "txtSQLValidation"
+ Me.txtSQLValidation.Size = New System.Drawing.Size(328, 20)
+ Me.txtSQLValidation.TabIndex = 35
+ '
+ 'btnValidationSQL
+ '
+ Me.btnValidationSQL.Location = New System.Drawing.Point(655, 122)
+ Me.btnValidationSQL.Name = "btnValidationSQL"
+ Me.btnValidationSQL.Size = New System.Drawing.Size(36, 23)
+ Me.btnValidationSQL.TabIndex = 34
+ Me.btnValidationSQL.Text = "..."
+ '
'GridControl4
'
Me.GridControl4.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
@@ -3341,6 +3374,7 @@ Partial Class frmMain
Me.TabControl1.ResumeLayout(False)
Me.tabProfile.ResumeLayout(False)
Me.tabProfile.PerformLayout()
+ CType(Me.txtSQLValidation.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridControl4, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.TBEMLP_POLL_PROFILESBindingSource, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.MyDataset, System.ComponentModel.ISupportInitialize).EndInit()
@@ -3653,4 +3687,6 @@ Partial Class frmMain
Friend WithEvents EMAIL_USERLabel As Label
Friend WithEvents EMAIL_PWLabel As Label
Friend WithEvents ARCHIVE_FOLDERLabel As Label
+ Friend WithEvents btnValidationSQL As DevExpress.XtraEditors.SimpleButton
+ Friend WithEvents txtSQLValidation As DevExpress.XtraEditors.TextEdit
End Class
diff --git a/App/EmailProfiler.Form/frmMain.resx b/App/EmailProfiler.Form/frmMain.resx
index a492908..95dc884 100644
--- a/App/EmailProfiler.Form/frmMain.resx
+++ b/App/EmailProfiler.Form/frmMain.resx
@@ -279,101 +279,25 @@
False
+
+ False
+
1271, 17
-
- 985, 56
-
-
- 1162, 173
-
-
- 623, 134
-
-
- 851, 173
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC
- pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++
- Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ
- /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA
- zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/
- IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E
- rkJggg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC
- DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC
- rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV
- i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG
- 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG
- QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX
- bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77
- wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0
- v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg
- UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA
- Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu
- lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w
- 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f
- Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+
- 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78
- n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI
- N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f
- oAc0QjgAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
- vAAADrwBlbxySQAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+//
- h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B
- twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA
- kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG
- WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9
- 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg==
-
-
290, 56
180, 56
-
- 180, 56
-
623, 134
985, 56
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
@@ -438,89 +362,6 @@
8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg==
-
- 1139, 56
-
-
-
-
- AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
- LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
- dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAO4DAAAC77u/
- PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
- IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
- MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
- Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
- MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
- WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz
- OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
- Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
- Pg0KICA8ZyBpZD0iUHJvcGVydGllcyI+DQogICAgPHBhdGggZD0iTTMwLDE4di00bC00LjQtMC43Yy0w
- LjItMC44LTAuNS0xLjUtMC45LTIuMWwyLjYtMy42bC0yLjgtMi44bC0zLjYsMi42Yy0wLjctMC40LTEu
- NC0wLjctMi4xLTAuOUwxOCwyaC00ICAgbC0wLjcsNC40Yy0wLjgsMC4yLTEuNSwwLjUtMi4xLDAuOUw3
- LjUsNC43TDQuNyw3LjVsMi42LDMuNmMtMC40LDAuNy0wLjcsMS40LTAuOSwyLjFMMiwxNHY0bDQuNCww
- LjdjMC4yLDAuOCwwLjUsMS41LDAuOSwyLjEgICBsLTIuNiwzLjZsMi44LDIuOGwzLjYtMi42YzAuNyww
- LjQsMS40LDAuNywyLjEsMC45TDE0LDMwaDRsMC43LTQuNGMwLjgtMC4yLDEuNS0wLjUsMi4xLTAuOWwz
- LjYsMi42bDIuOC0yLjhsLTIuNi0zLjYgICBjMC40LTAuNywwLjctMS40LDAuOS0yLjFMMzAsMTh6IE0x
- NiwyMGMtMi4yLDAtNC0xLjgtNC00YzAtMi4yLDEuOC00LDQtNHM0LDEuOCw0LDRDMjAsMTguMiwxOC4y
- LDIwLDE2LDIweiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
-
-
-
- 1021, 95
-
-
-
- AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
- LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
- dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOYCAAAC77u/
- PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
- IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
- MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
- Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
- MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLlll
- bGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
- MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
- Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMzU7fQoJLnN0M3tv
- cGFjaXR5OjAuNjU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRnVubmVsIj4NCiAgICA8cmVjdCB4PSIxMiIg
- eT0iMjIiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIwIiByeT0iMCIgY2xhc3M9IkJsdWUiIC8+DQog
- ICAgPHBvbHlnb24gcG9pbnRzPSIxMiwyMCA0LDEyIDI2LDEyIDE4LDIwICAiIGNsYXNzPSJZZWxsb3ci
- IC8+DQogICAgPHBvbHlnb24gcG9pbnRzPSI0LDEwIDAsMiAzMCwyIDI2LDEwICAiIGNsYXNzPSJSZWQi
- IC8+DQogIDwvZz4NCjwvc3ZnPgs=
-
-
-
- 1175, 95
-
-
-
- AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
- LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
- dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGYEAAAC77u/
- PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
- IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
- MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
- Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
- MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
- ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD
- MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
- Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk
- aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp
- c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41
- O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7
- ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp
- c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJEb2N1bWVudF8xXyI+
- DQogICAgPHBhdGggZD0iTTE1LDIwbDktOWw1LDVsLTksOUwxNSwyMHogTTMxLjcsMTEuOWwtMy42LTMu
- NmMtMC40LTAuNC0xLTAuNC0xLjQsMEwyNSwxMGw1LDVsMS43LTEuNyAgIEMzMi4xLDEyLjksMzIuMSwx
- Mi4zLDMxLjcsMTEuOXogTTE0LDI2aDVsLTUtNVYyNnoiIGNsYXNzPSJCbHVlIiAvPg0KICAgIDxwYXRo
- IGQ9Ik0yNCwyMy44VjI4aC00LjJIMTJINlY0aDE4djQuMmwyLTJWM2MwLTAuNS0wLjUtMS0xLTFINUM0
- LjQsMiw0LDIuNSw0LDN2MjZjMCwwLjUsMC41LDEsMSwxaDIwICAgYzAuNSwwLDEtMC41LDEtMXYtNy4y
- TDI0LDIzLjh6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
-
-
-
- 17, 95
-
17, 95
@@ -591,9 +432,31 @@
8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg==
-
- 537, 95
-
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
+ LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+ dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAO4DAAAC77u/
+ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+ IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+ MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+ Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+ MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
+ WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAz
+ OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+ Y2l0eTowLjc1O30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
+ Pg0KICA8ZyBpZD0iUHJvcGVydGllcyI+DQogICAgPHBhdGggZD0iTTMwLDE4di00bC00LjQtMC43Yy0w
+ LjItMC44LTAuNS0xLjUtMC45LTIuMWwyLjYtMy42bC0yLjgtMi44bC0zLjYsMi42Yy0wLjctMC40LTEu
+ NC0wLjctMi4xLTAuOUwxOCwyaC00ICAgbC0wLjcsNC40Yy0wLjgsMC4yLTEuNSwwLjUtMi4xLDAuOUw3
+ LjUsNC43TDQuNyw3LjVsMi42LDMuNmMtMC40LDAuNy0wLjcsMS40LTAuOSwyLjFMMiwxNHY0bDQuNCww
+ LjdjMC4yLDAuOCwwLjUsMS41LDAuOSwyLjEgICBsLTIuNiwzLjZsMi44LDIuOGwzLjYtMi42YzAuNyww
+ LjQsMS40LDAuNywyLjEsMC45TDE0LDMwaDRsMC43LTQuNGMwLjgtMC4yLDEuNS0wLjUsMi4xLTAuOWwz
+ LjYsMi42bDIuOC0yLjhsLTIuNi0zLjYgICBjMC40LTAuNywwLjctMS40LDAuOS0yLjFMMzAsMTh6IE0x
+ NiwyMGMtMi4yLDAtNC0xLjgtNC00YzAtMi4yLDEuOC00LDQtNHM0LDEuOCw0LDRDMjAsMTguMiwxOC4y
+ LDIwLDE2LDIweiIgY2xhc3M9IkJsdWUiIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+
+
537, 95
@@ -664,9 +527,26 @@
8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg==
-
- 17, 134
-
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
+ LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+ dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAOYCAAAC77u/
+ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+ IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+ MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+ Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+ MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLlll
+ bGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+ MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+ Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMzU7fQoJLnN0M3tv
+ cGFjaXR5OjAuNjU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRnVubmVsIj4NCiAgICA8cmVjdCB4PSIxMiIg
+ eT0iMjIiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIwIiByeT0iMCIgY2xhc3M9IkJsdWUiIC8+DQog
+ ICAgPHBvbHlnb24gcG9pbnRzPSIxMiwyMCA0LDEyIDI2LDEyIDE4LDIwICAiIGNsYXNzPSJZZWxsb3ci
+ IC8+DQogICAgPHBvbHlnb24gcG9pbnRzPSI0LDEwIDAsMiAzMCwyIDI2LDEwICAiIGNsYXNzPSJSZWQi
+ IC8+DQogIDwvZz4NCjwvc3ZnPgs=
+
+
17, 134
@@ -737,9 +617,102 @@
8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg==
-
- 239, 173
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
+ LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+ dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAGYEAAAC77u/
+ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+ IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+ MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+ Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+ MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
+ ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5HcmVlbntmaWxsOiMwMzlD
+ MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+ Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntkaXNwbGF5Om5vbmU7fQoJLnN0M3tk
+ aXNwbGF5OmlubGluZTtmaWxsOiNGRkIxMTU7fQoJLnN0NHtkaXNwbGF5OmlubGluZTt9Cgkuc3Q1e2Rp
+ c3BsYXk6aW5saW5lO29wYWNpdHk6MC43NTt9Cgkuc3Q2e2Rpc3BsYXk6aW5saW5lO29wYWNpdHk6MC41
+ O30KCS5zdDd7ZGlzcGxheTppbmxpbmU7ZmlsbDojMDM5QzIzO30KCS5zdDh7ZGlzcGxheTppbmxpbmU7
+ ZmlsbDojRDExQzFDO30KCS5zdDl7ZGlzcGxheTppbmxpbmU7ZmlsbDojMTE3N0Q3O30KCS5zdDEwe2Rp
+ c3BsYXk6aW5saW5lO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+DQogIDxnIGlkPSJEb2N1bWVudF8xXyI+
+ DQogICAgPHBhdGggZD0iTTE1LDIwbDktOWw1LDVsLTksOUwxNSwyMHogTTMxLjcsMTEuOWwtMy42LTMu
+ NmMtMC40LTAuNC0xLTAuNC0xLjQsMEwyNSwxMGw1LDVsMS43LTEuNyAgIEMzMi4xLDEyLjksMzIuMSwx
+ Mi4zLDMxLjcsMTEuOXogTTE0LDI2aDVsLTUtNVYyNnoiIGNsYXNzPSJCbHVlIiAvPg0KICAgIDxwYXRo
+ IGQ9Ik0yNCwyMy44VjI4aC00LjJIMTJINlY0aDE4djQuMmwyLTJWM2MwLTAuNS0wLjUtMS0xLTFINUM0
+ LjQsMiw0LDIuNSw0LDN2MjZjMCwwLjUsMC41LDEsMSwxaDIwICAgYzAuNSwwLDEtMC41LDEtMXYtNy4y
+ TDI0LDIzLjh6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
+
+
+
+ 1162, 173
+
+ 851, 173
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC
+ pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++
+ Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ
+ /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA
+ zpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAM6APnz3w1/
+ IPb735qsT7oB3em6YP+CcH2cEekGtCQZ/G+IN/xfE2v8vzLahHQD6AQYGAAkI9iedfyIaQAAAABJRU5E
+ rkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC
+ DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC
+ rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV
+ i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG
+ 86CNhdrsX9a/uQZTPhQl4rMY4OLofbl3aX7I8uwPC7y/g1YdjyVJuEvT8e1tfwUYteHUxCCfHChDeHmG
+ QQvokjlOU+PbWA0x3pZnILVVI3uvQyHsbiLnqnGmRCF1NYD8pDhpRxOH7HQoAKZGkFKjceszQbpSrumX
+ bO+G80MFwKUTxgfgcO/b8D9IpXoFiiMDHIQm0skAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77
+ wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0
+ v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg
+ UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA
+ Iu/O/9T+11gVGSSd+C+b9vW/bvA83AYYZt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPu
+ lf8gBXgVDULAwAAA8HbAq6XlmnAAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w
+ 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f
+ Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+
+ 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78
+ n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI
+ N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f
+ oAc0QjgAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+//
+ h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B
+ twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA
+ kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG
+ WOTd+W9TcAVDMwiA5FL7X8O9hBUYZt3GqhkEQHJhLS//6wbPw22ATtoNnJIgOb/qh/81fKfhNgAfcMq9
+ 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg==
+
+
239, 173
diff --git a/App/EmailProfiler.Form/frmMain.vb b/App/EmailProfiler.Form/frmMain.vb
index f0b709c..ced5b77 100644
--- a/App/EmailProfiler.Form/frmMain.vb
+++ b/App/EmailProfiler.Form/frmMain.vb
@@ -7,6 +7,7 @@ Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Messaging
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Messaging.Mail
+Imports DigitalData.GUIs.Common
Public Class frmMain
Private Logger As Logger
@@ -931,4 +932,19 @@ Public Class frmMain
Private Sub GridView6_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles GridView6.FocusedRowChanged
SetEmailTextboxLabels()
End Sub
+
+ Private Sub btnValidationSQL_Click(sender As Object, e As EventArgs) Handles btnValidationSQL.Click
+ Dim oForm As New frmSQLEditor(LogConfig, _database) With {
+ .SQLConnection = 1,
+ .SQLCommand = txtSQLValidation.EditValue,
+ .PlaceholdersManual = New Dictionary(Of String, String) From {
+ {"EMAIL", "EMAIL"},
+ {"DOMAIN", "DOMAIN"}
+ },
+ .PlaceholdersManualPrefix = "CUST"
+ }
+ oForm.Show()
+
+ txtSQLValidation.EditValue = oForm.SQLCommand
+ End Sub
End Class