106 lines
4.6 KiB
VB.net
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
|