Monorepo/Message/Email.vb
Digital Data - Marlon Schreiber 8cde9f0119 MS Service und WMDLL
2018-08-21 10:36:59 +02:00

106 lines
4.6 KiB
VB.net

Imports System
Imports Independentsoft.Email
Imports Independentsoft.Email.Smtp
Imports Independentsoft.Email.Mime
Public Class Email
Private Shared Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger
Public Function NewSendMail(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,
AUTH_TYPE As String, 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
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", "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)
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)
_error = True
Continue For
End Try
Try
client.Connect()
Catch ex As Exception
Logger.Warn("clsEmail.SendMail(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
Try
client.EnableSsl = False
Logger.Info("Authentification via TLS. SSL enabled")
'client.StartTls()
Catch ex As Exception
Logger.Warn("clsEmail.SendMail(Client.StartTls): " & ex.Message)
_error = True
Continue For
End Try
End If
Try
client.Login(mailUser, mailPW)
Logger.Info("Logged in!")
Catch ex As Exception
Logger.Warn("clsEmail.SendMail(Client.Login): " & ex.Message)
_error = True
client.Disconnect()
Continue For
End Try
Try
client.Send(message)
Logger.Info("Message to " & _mailempfaenger & " has been send.")
Catch ex As Exception
Logger.Warn("clsEmail.SendMail(Client.Send): " & ex.Message)
_error = True
client.Disconnect()
Continue For
End Try
client.Disconnect()
Catch ex As Exception
Logger.Error(ex)
_error = True
End Try
Next
If _error = True Then
Return False
Else
Return True
End If
End Function
End Class