This commit is contained in:
Digital Data - Marlon Schreiber
2018-08-10 13:43:18 +02:00
parent 5ff1bec8cc
commit be9fca94b3
6 changed files with 170 additions and 67 deletions

View File

@@ -43,6 +43,9 @@
<OptionInfer>On</OptionInfer> <OptionInfer>On</OptionInfer>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Independentsoft.Email">
<HintPath>P:\Projekte DIGITAL DATA\DIGITAL DATA - Entwicklung\DLL_Bibliotheken\Email .NET\Bin\Independentsoft.Email.dll</HintPath>
</Reference>
<Reference Include="Interop.WINDREAMLib"> <Reference Include="Interop.WINDREAMLib">
<HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll</HintPath> <HintPath>P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes> <EmbedInteropTypes>False</EmbedInteropTypes>

View File

@@ -1,4 +1,8 @@
Imports System.Net.Mail
Imports System
Imports Independentsoft.Email
Imports Independentsoft.Email.Smtp
Imports Independentsoft.Email.Mime
Public Class clsEmail Public Class clsEmail
Private Shared MailAktiv As Boolean = False Private Shared MailAktiv As Boolean = False
@@ -26,65 +30,151 @@ Public Class clsEmail
' Return False ' Return False
' End Try ' End Try
' End Function ' End Function
Public Shared Function Send_EMail(ByVal MailBetreff As String, ByVal vBody As String, MailEmpfaenger As String, MailFrom As String, MAilSMTP As String, MailUser As String, MailUser_PW As String, SSL As Boolean, 'Public Shared Function Send_EMail(ByVal MailBetreff As String, ByVal vBody As String, MailEmpfaenger As String, MailFrom As String, MAilSMTP As String, MailUser As String, MailUser_PW As String, SSL As Boolean,
Optional attment As String = "", Optional test As Boolean = False) ' Optional attment As String = "", Optional test As Boolean = False)
'#### E-MAIL NACHRICHT VERSENDEN ' '#### E-MAIL NACHRICHT VERSENDEN
Try ' Try
' Dim empfaenger As String()
' If MailEmpfaenger.Contains(";") Then
' empfaenger = MailEmpfaenger.Split(";")
' Else
' ReDim Preserve empfaenger(0)
' empfaenger(0) = MailEmpfaenger
' End If
' 'Für jeden Empfänger eine Neue Mail erzeugen
' For Each _mailempfaenger As String In empfaenger
' 'Neue Nachricht erzeugen:
' Dim message As New MailMessage(MailFrom, _mailempfaenger, MailBetreff,
' "<font face=""Arial"">" & vBody & "</font>") '& "<br>" &
' '"<br>Domain: " & Environment.UserDomainName &
' '"<br>Gesendet am: " & My.Computer.Clock.LocalTime.ToShortDateString & "-" &
' 'My.Computer.Clock.LocalTime.ToLongTimeString &
' ' create and add the attachment(s) */
' If attment <> String.Empty Then
' If System.IO.File.Exists(attment) Then
' Dim Attachment As Attachment = New Attachment(attment)
' message.Attachments.Add(Attachment)
' End If
' End If
' With message
' .IsBodyHtml = True
' End With
' 'Einen SMTP Client erzeugen und Anmeldungsinformationen hinterlegen
' Dim emailClient As New SmtpClient(MAilSMTP)
' emailClient.EnableSsl = SSL
' 'Email mit Authentifizierung
' Dim SMTPUserInfo As New System.Net.NetworkCredential(MailUser, MailUser_PW) ', My.Settings.vDomain)
' emailClient.UseDefaultCredentials = False
' emailClient.Credentials = SMTPUserInfo
' emailClient.Port = 25
' clsLogger.Add("==> Email erfolgreich an " & _mailempfaenger & " versendet!", False)
' clsLogger.Add("==> Text: " & vBody, False)
' clsLogger.Add("", False)
' '*Send the message */
' emailClient.Send(message)
' If test = True Then
' MsgBox("The testmail was send successfully", MsgBoxStyle.Information)
' End If
' Next
' Return True
' Catch ex As Exception
' clsLogger.Add(ex.Message, True, "cls.SendEmail")
' If test = True Then
' MsgBox("Unexpected error in Send Testmail: " & ex.Message, MsgBoxStyle.Critical)
' End If
' Return False
' End Try
'End Function
Public Shared Function Email_Send_Independentsoft(ByVal mailSubject As String, ByVal mailBody As String, mailto As String,
mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String,
SSL As Boolean, Optional attment As String = "")
Dim empfaenger As String() Dim empfaenger As String()
If MailEmpfaenger.Contains(";") Then If mailto.Contains(";") Then
empfaenger = MailEmpfaenger.Split(";") empfaenger = mailto.Split(";")
Else Else
ReDim Preserve empfaenger(0) ReDim Preserve empfaenger(0)
empfaenger(0) = MailEmpfaenger empfaenger(0) = mailto
End If End If
Dim _error As Boolean = False
'Für jeden Empfänger eine Neue Mail erzeugen 'Für jeden Empfänger eine Neue Mail erzeugen
For Each _mailempfaenger As String In empfaenger For Each _mailempfaenger As String In empfaenger
'Neue Nachricht erzeugen:
Dim message As New MailMessage(MailFrom, _mailempfaenger, MailBetreff,
"<font face=""Arial"">" & vBody & "</font>") '& "<br>" &
'"<br>Domain: " & Environment.UserDomainName &
'"<br>Gesendet am: " & My.Computer.Clock.LocalTime.ToShortDateString & "-" &
'My.Computer.Clock.LocalTime.ToLongTimeString &
' create and add the attachment(s) */ Try
Dim message As New Message()
message.From = New Mailbox(mailfrom, mailfrom)
message.[To].Add(New Mailbox(_mailempfaenger))
message.Subject = mailSubject
Dim textBodyPart As New BodyPart()
textBodyPart.ContentType = New ContentType("text", "plain", "utf-8")
textBodyPart.ContentTransferEncoding = ContentTransferEncoding.QuotedPrintable
textBodyPart.Body = mailBody
message.BodyParts.Add(textBodyPart)
If attment <> String.Empty Then If attment <> String.Empty Then
If System.IO.File.Exists(attment) Then If System.IO.File.Exists(attment) Then
Dim Attachment As Attachment = New Attachment(attment) Dim attachment1 As New Attachment("c:\testfolder\test.docx")
message.Attachments.Add(Attachment) If attment.ToLower.EndsWith("pdf") Then
attachment1.ContentType = New ContentType("application", "pdf")
ElseIf attment.ToLower.EndsWith("jpg") Then
attachment1.ContentType = New ContentType("application", "jpg")
ElseIf attment.ToLower.EndsWith("docx") Then
attachment1.ContentType = New ContentType("application", "MS-word")
End If
message.BodyParts.Add(attachment1)
End If End If
End If End If
Dim client As SmtpClient
With message Try
.IsBodyHtml = True client = New SmtpClient(mailsmtp, mailport)
End With
'Einen SMTP Client erzeugen und Anmeldungsinformationen hinterlegen
Dim emailClient As New SmtpClient(MAilSMTP)
emailClient.EnableSsl = SSL
'Email mit Authentifizierung
Dim SMTPUserInfo As New System.Net.NetworkCredential(MailUser, MailUser_PW) ', My.Settings.vDomain)
emailClient.UseDefaultCredentials = False
emailClient.Credentials = SMTPUserInfo
emailClient.Port = 25
clsLogger.Add("==> Email erfolgreich an " & _mailempfaenger & " versendet!", False)
clsLogger.Add("==> Text: " & vBody, False)
clsLogger.Add("", False)
'*Send the message */
emailClient.Send(message)
If test = True Then
MsgBox("The testmail was send successfully", MsgBoxStyle.Information)
End If
Next
Return True
Catch ex As Exception Catch ex As Exception
clsLogger.Add(ex.Message, True, "cls.SendEmail") clsLogger.AddError(ex.Message, "clsEmail.SendMail(Create Client)")
If test = True Then _error = True
MsgBox("Unexpected error in Send Testmail: " & ex.Message, MsgBoxStyle.Critical) Continue For
End If
Return False
End Try End Try
Try
client.Connect()
Catch ex As Exception
clsLogger.AddError(ex.Message, "clsEmail.SendMail(Client.Connect)")
_error = True
Continue For
End Try
client.StartTls()
Try
client.Login(mailUser, mailPW)
Catch ex As Exception
clsLogger.AddError(ex.Message, "clsEmail.SendMail(Client.Login)")
_error = True
client.Disconnect()
Continue For
End Try
Try
client.Send(message)
Catch ex As Exception
clsLogger.AddError(ex.Message, "clsEmail.SendMail(Client.Send)")
_error = True
client.Disconnect()
Continue For
End Try
client.Disconnect()
Catch ex As Exception
clsLogger.AddError(ex.Message, "clsEmail.SendMail()")
_error = True
End Try
Next
clsLogger.WriteLog()
If _error = True Then
Return False
Else
Return True
End If
End Function End Function
End Class End Class

View File

@@ -85,13 +85,13 @@ Public Class clsLogger
End If End If
'Präfixe schreiben 'Präfixe schreiben
If _error = True And Funktion <> "" Then If _error = True And Funktion <> "" Then
msg = ">> Achtung Fehler in Funktion '" & Funktion & "'" & vbNewLine & "Fehlermeldung: " msg = ">> Unexpected error in function '" & Funktion & "': "
ElseIf _error = True Then ElseIf _error = True Then
msg = ">> Achtung Fehler:" & vbNewLine & "Fehlermeldung: " msg = ">> Unexpected error: "
End If End If
'Präfix und Meldung zusammenstellen 'Präfix und Meldung zusammenstellen
msg &= text msg &= text
log_string &= msg log_string &= Now.ToString & " " & msg
End Sub End Sub
Public Shared Sub AddError(ByVal error_string As String, Optional ByVal Funktion As String = "") Public Shared Sub AddError(ByVal error_string As String, Optional ByVal Funktion As String = "")
If Inited = False Then If Inited = False Then
@@ -101,12 +101,12 @@ Public Class clsLogger
'Zuerst mal die Details schreiben 'Zuerst mal die Details schreiben
WriteLog() WriteLog()
'Nun den eigentlichen Fehler loggen 'Nun den eigentlichen Fehler loggen
Dim msg As String Dim msg As String = Now.ToString
'Präfixe schreiben 'Präfixe schreiben
If Funktion <> "" Then If Funktion <> "" Then
msg = ">> Achtung Fehler in Funktion '" & Funktion & "'" & vbNewLine & "Fehlermeldung: " msg &= ">> Unexpected error in function '" & Funktion & "': "
Else Else
msg = ">> Achtung Fehler:" & vbNewLine & "Fehlermeldung: " msg &= ">> Unexpected error: "
End If End If
'Präfix und Meldung zusammenstellen 'Präfix und Meldung zusammenstellen
msg &= error_string msg &= error_string
@@ -145,6 +145,12 @@ Public Class clsLogger
Public Shared Sub WriteLog() Public Shared Sub WriteLog()
Try Try
If log_string = Nothing Then
Exit Sub
End If
If log_string = String.Empty Then
Exit Sub
End If
'Veruch das Log zu öffnen 'Veruch das Log zu öffnen
Dim fs As FileStream = New FileStream(LogFilename, FileMode.OpenOrCreate, FileAccess.Write) Dim fs As FileStream = New FileStream(LogFilename, FileMode.OpenOrCreate, FileAccess.Write)
' --- Stream öffnen ' --- Stream öffnen

View File

@@ -156,6 +156,7 @@ Public Class clsProfil
Dim MAIL_USER As String = "" Dim MAIL_USER As String = ""
Dim MAIL_USER_PW As String = "" Dim MAIL_USER_PW As String = ""
Dim MAIL_SSL As Boolean = False Dim MAIL_SSL As Boolean = False
Dim MAIL_PORT As String = "25"
For Each emailrow As DataRow In ClassWMResulthandler.clsCURRENT.DT_TBDD_EMAIL.Rows For Each emailrow As DataRow In ClassWMResulthandler.clsCURRENT.DT_TBDD_EMAIL.Rows
If emailrow.Item("GUID") = CInt(EMAIL_PROFIL) Then If emailrow.Item("GUID") = CInt(EMAIL_PROFIL) Then
@@ -164,6 +165,7 @@ Public Class clsProfil
MAIL_USER = emailrow.Item("EMAIL_USER") MAIL_USER = emailrow.Item("EMAIL_USER")
MAIL_USER_PW = emailrow.Item("EMAIL_PW") MAIL_USER_PW = emailrow.Item("EMAIL_PW")
MAIL_SSL = emailrow.Item("SSL_AUTH") MAIL_SSL = emailrow.Item("SSL_AUTH")
MAIL_PORT = emailrow.Item("PORT")
End If End If
Next Next
@@ -192,7 +194,7 @@ Public Class clsProfil
Email_Betreff = clsDateiverarbeitung.REGEX_REPLACE(WMdok, Email_Betreff) Email_Betreff = clsDateiverarbeitung.REGEX_REPLACE(WMdok, Email_Betreff)
Email_Body = clsDateiverarbeitung.REGEX_REPLACE(WMdok, Email_Body) Email_Body = clsDateiverarbeitung.REGEX_REPLACE(WMdok, Email_Body)
Dim FILENAME = ClassWMResulthandler.clsCURRENT.WDLAUFWERK & ":" & WMdok.aPath Dim FILENAME = ClassWMResulthandler.clsCURRENT.WDLAUFWERK & ":" & WMdok.aPath
clsEmail.Send_EMail(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_USER, MAIL_USER_PW, MAIL_SSL, FILENAME) clsEmail.Email_Send_Independentsoft(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_SSL, FILENAME)
Else Else
@@ -471,7 +473,7 @@ Public Class clsProfil
Dim MAIL_USER As String = "" Dim MAIL_USER As String = ""
Dim MAIL_USER_PW As String = "" Dim MAIL_USER_PW As String = ""
Dim MAIL_SSL As Boolean = False Dim MAIL_SSL As Boolean = False
Dim MAIL_PORT As Integer
For Each emailrow As DataRow In ClassWMResulthandler.clsCURRENT.DT_TBDD_EMAIL.Rows For Each emailrow As DataRow In ClassWMResulthandler.clsCURRENT.DT_TBDD_EMAIL.Rows
If emailrow.Item("GUID") = CInt(EMAIL_PROFIL) Then If emailrow.Item("GUID") = CInt(EMAIL_PROFIL) Then
@@ -480,6 +482,7 @@ Public Class clsProfil
MAIL_USER = emailrow.Item("EMAIL_USER") MAIL_USER = emailrow.Item("EMAIL_USER")
MAIL_USER_PW = emailrow.Item("EMAIL_PW") MAIL_USER_PW = emailrow.Item("EMAIL_PW")
MAIL_SSL = emailrow.Item("SSL_AUTH") MAIL_SSL = emailrow.Item("SSL_AUTH")
MAIL_PORT = emailrow.Item("PORT")
End If End If
Next Next
@@ -501,7 +504,7 @@ Public Class clsProfil
Return False Return False
End If End If
clsEmail.Send_EMail(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_USER, MAIL_USER_PW, MAIL_SSL, ClassWMResulthandler.clsCURRENT.CONCATTED_FILE) clsEmail.Email_Send_Independentsoft(Email_Betreff, Email_Body, Email_Empfänger, MAILFROM, MAILSMTP, MAIL_PORT, MAIL_USER, MAIL_USER_PW, MAIL_SSL, ClassWMResulthandler.clsCURRENT.CONCATTED_FILE)
Else Else

View File

@@ -8,7 +8,7 @@ Imports System.Runtime.InteropServices
' Die Werte der Assemblyattribute überprüfen ' Die Werte der Assemblyattribute überprüfen
<Assembly: AssemblyTitle("ResultHandler_Konfig")> <Assembly: AssemblyTitle("WM ResultHandler - Config")>
<Assembly: AssemblyDescription("")> <Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")> <Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("ResultHandler_Konfig")> <Assembly: AssemblyProduct("ResultHandler_Konfig")>
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben: ' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")> ' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.1.0.0")> <Assembly: AssemblyVersion("1.2.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.1")> <Assembly: AssemblyFileVersion("1.0.0.1")>

View File

@@ -640,10 +640,7 @@ Public Class frmMain
Sub Manual(ID As Integer) Sub Manual(ID As Integer)
'Try 'Try
Dim notcompleted As Boolean = False Dim notcompleted As Boolean = False
ClassWMResulthandler.clsLogger.Add("", False)
ClassWMResulthandler.clsLogger.Add("## Start Durchlauf WindreamResultHandler - " & Now & " ## ", False) ClassWMResulthandler.clsLogger.Add("## Start Durchlauf WindreamResultHandler - " & Now & " ## ", False)
ClassWMResulthandler.clsLogger.Add("", False)
'windream initialisieren 'windream initialisieren
If ClassWMResulthandler.clsDatatabase.Init(My.Settings.SQLSERVER_CS) = True Then If ClassWMResulthandler.clsDatatabase.Init(My.Settings.SQLSERVER_CS) = True Then
If _windream.Init() = True Then If _windream.Init() = True Then
@@ -783,8 +780,12 @@ Public Class frmMain
Dim PWPlain = wrapper.DecryptData(EMAIL_PWTextBox.Text) Dim PWPlain = wrapper.DecryptData(EMAIL_PWTextBox.Text)
ClassWMResulthandler.clsEmail.Send_EMail("Testmail DD Windream-ResultHandler", "This is the body (text will be replaced within profile)", txtTestmail.Text, If ClassWMResulthandler.clsEmail.Email_Send_Independentsoft("Testmail DD Windream-ResultHandler", "This is the body (text will be replaced within profile)", txtTestmail.Text,
EMAIL_FROMTextBox.Text, EMAIL_SMTPTextBox.Text, EMAIL_USERTextBox.Text, PWPlain, CheckBoxSSL.CheckState, "", True) EMAIL_FROMTextBox.Text, EMAIL_SMTPTextBox.Text, PORTTextBox.Text, EMAIL_USERTextBox.Text, PWPlain, CheckBoxSSL.CheckState, "") = True Then
MsgBox("Email was send successfully.", MsgBoxStyle.Information)
Else
MsgBox("Could not send the testmail. Please check the log.", MsgBoxStyle.Exclamation)
End If
End If End If
End Sub End Sub