MS
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user