This commit is contained in:
Digital Data - Marlon Schreiber
2018-11-07 15:11:52 +01:00
parent 844a423f7d
commit 24f052f5b5
88 changed files with 2833 additions and 159059 deletions

View File

@@ -3,180 +3,149 @@ Imports System
Imports Independentsoft.Email
Imports Independentsoft.Email.Smtp
Imports Independentsoft.Email.Mime
Imports DigitalData.Modules.Logging
Public Class clsEmail
Private Shared Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger
Dim Logger As DigitalData.Modules.Logging.Logger
Private Shared MailAktiv As Boolean = False
'Public Shared Function Init()
' Try
' Dim DT As DataTable = clsDatatabase.Return_Datatable("select * from TBDD_EMAIL_ACCOUNT where ACTIVE = 1")
' If DT.Rows.Count = 1 Then
' For Each row As DataRow In DT.Rows
' MailFrom = row.Item("EMAIL_ABS")
' MAilSMTP = row.Item("EMAIL_SMTP")
' MailSSL = row.Item("EMAIL_SSL")
' MailUser = row.Item("EMAIL_USER")
' MailUser_PW = row.Item("EMAIL_USER_PW")
' MailAktiv = True
' Exit For
' Next
' Else
' MailAktiv = False
' End If
' Return True
' Catch ex As Exception
' clsLogger.Add(ex.Message, True, "clsEmail.Init")
' Return False
' End Try
' 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,
' Optional attment As String = "", Optional test As Boolean = False)
' '#### E-MAIL NACHRICHT VERSENDEN
' 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,
Sub New(MyLogger As LogConfig)
Logger = MyLogger.GetLogger()
End Sub
Public 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()
If mailto.Contains(";") Then
empfaenger = mailto.Split(";")
Else
ReDim Preserve empfaenger(0)
empfaenger(0) = mailto
End If
Dim _error As Boolean = False
'Für jeden Empfänger eine Neue Mail erzeugen
For Each _mailempfaenger As String In empfaenger
AUTH_TYPE As String, Optional attment As String = "")
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 System.IO.File.Exists(attment) Then
Dim attachment1 As New Attachment(attment)
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")
Try
Logger.Debug($"in Email_Send_Independentsoft..")
Dim empfaenger As String()
If mailto.Contains(";") Then
empfaenger = mailto.Split(";")
Else
ReDim Preserve empfaenger(0)
empfaenger(0) = mailto
End If
Dim _error As Boolean = False
'Für jeden Empfänger eine Neue Mail erzeugen
For Each _mailempfaenger As String In empfaenger
Logger.Debug($"Working on email for {_mailempfaenger}..")
Try
Dim message As New Message()
message.From = New Mailbox(mailfrom, mailfrom)
message.[To].Add(New Mailbox(_mailempfaenger))
message.Subject = mailSubject
Logger.Debug($"Message created..")
Dim textBodyPart As New BodyPart()
textBodyPart.ContentType = New ContentType("text", "html", "utf-8")
textBodyPart.ContentTransferEncoding = ContentTransferEncoding.QuotedPrintable
textBodyPart.Body = mailBody
message.BodyParts.Add(textBodyPart)
If attment <> String.Empty Then
If System.IO.File.Exists(attment) Then
Dim attachment1 As New Attachment(attment)
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)
Else
Logger.Warn($"Attachment {attment.ToString} is not existing!")
End If
message.BodyParts.Add(attachment1)
End If
End If
Dim client As SmtpClient
Try
client = New SmtpClient(mailsmtp, mailport)
Catch ex As Exception
Logger.Warn("clsEmail.SendMail(Create Client): " & ex.Message)
Dim client As SmtpClient
Try
client = New SmtpClient(mailsmtp, mailport)
Catch ex As Exception
Logger.Warn("clsEmail.Create Client: " & ex.Message)
_error = True
Continue For
End Try
Try
client.Connect()
Catch ex As Exception
Logger.Warn("clsEmail.Client.Connect: " & ex.Message)
_error = True
' Continue For
End Try
Logger.Info("Connected to Client!")
If AUTH_TYPE = "SSL" Then
client.EnableSsl = True
'client.ValidateRemoteCertificate = True
Logger.Info("Authentification via SSL.")
ElseIf AUTH_TYPE = "TLS" Then
' client.ValidateRemoteCertificate = False
client.StartTls()
client.EnableSsl = False
Logger.Info("Authentification via TLS. SSL disabled")
Else
client.EnableSsl = False
Logger.Info("Authentification NONE. SSL disabled")
End If
Try
_error = True
Continue For
End Try
client.Connect()
Catch ex As Exception
Logger.Warn("clsEmail.Client.Connect: " & ex.Message)
_error = True
' Continue For
End Try
Try
If mailsmtp.Contains("office365.com") Then
client.Login(mailUser, mailPW, AuthenticationType.None)
Else
client.Login(mailUser, mailPW)
End If
Try
client.Connect()
Catch ex As Exception
Logger.Warn("clsEmail.SendMail(Client.Connect): " & ex.Message)
_error = True
Continue For
Logger.Info("Logged in!")
Catch ex As Exception
Try
If mailsmtp.Contains("office365.com") Then
client.Login(mailUser, mailPW, AuthenticationType.Login)
Else
client.Login(mailUser, mailPW, AuthenticationType.Anonymous)
End If
End Try
client.StartTls()
Try
client.Login(mailUser, mailPW)
Catch ex As Exception
Logger.Warn("clsEmail.SendMail(Client.Login): " & ex.Message)
_error = True
Catch ex1 As Exception
Try
client.Login(mailUser, mailPW, AuthenticationType.Login)
Catch ex2 As Exception
Logger.Warn("clsEmail.Client.Login: " & ex.Message)
_error = True
client.Disconnect()
Continue For
End Try
End Try
End Try
Try
client.Send(message)
Logger.Info("Message to " & _mailempfaenger & " has been send.")
_error = False
Catch ex As Exception
Logger.Warn("clsEmail.Client.Send: " & ex.Message)
_error = True
client.Disconnect()
Continue For
End Try
client.Disconnect()
Continue For
End Try
Try
client.Send(message)
Catch ex As Exception
Logger.Warn("clsEmail.SendMail(Client.Send): " & ex.Message)
Logger.Error(ex)
_error = True
client.Disconnect()
Continue For
End Try
client.Disconnect()
Next
Catch ex As Exception
Logger.Error(ex)
_error = True
End Try
Next
If _error = True Then
If _error = True Then
Return False
Else
Return True
End If
Catch ex As Exception
Logger.Error(ex)
Return False
Else
Return True
End If
End Try
End Function
End Class