-- sendmail, mailkit como principal
This commit is contained in:
@@ -1,5 +1,9 @@
|
|||||||
Imports System.IO
|
Imports System.IO
|
||||||
|
Imports System.Net
|
||||||
Imports Extensiones
|
Imports Extensiones
|
||||||
|
Imports MailKit.Net.Smtp
|
||||||
|
Imports MailKit.Security
|
||||||
|
Imports MimeKit
|
||||||
|
|
||||||
Public Class ClsSisMail
|
Public Class ClsSisMail
|
||||||
|
|
||||||
@@ -50,7 +54,7 @@ Public Class ClsSisMail
|
|||||||
For Each ItemMail As ArchivoMail In Archivos
|
For Each ItemMail As ArchivoMail In Archivos
|
||||||
|
|
||||||
If ItemMail IsNot Nothing Then
|
If ItemMail IsNot Nothing Then
|
||||||
If ItemMail.Ruta <> "" AndAlso IO.File.Exists(ItemMail.Ruta) Then
|
If ItemMail.Ruta <> "" AndAlso System.IO.File.Exists(ItemMail.Ruta) Then
|
||||||
ItemMail.ArchivoBinario = StreamFile(ItemMail.Ruta)
|
ItemMail.ArchivoBinario = StreamFile(ItemMail.Ruta)
|
||||||
If ItemMail.NombreArchivo = "" Then ItemMail.NombreArchivo = Path.GetFileName(ItemMail.Ruta)
|
If ItemMail.NombreArchivo = "" Then ItemMail.NombreArchivo = Path.GetFileName(ItemMail.Ruta)
|
||||||
ObjMail.Archivos.Add(ItemMail)
|
ObjMail.Archivos.Add(ItemMail)
|
||||||
@@ -75,6 +79,104 @@ Public Class ClsSisMail
|
|||||||
Return False
|
Return False
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
If ObjMail.ObjEmpresa.Soporte_Mail <> "" Then Return FinalSendOld(ObjMail)
|
||||||
|
|
||||||
|
Dim Retorno As Boolean = False
|
||||||
|
Dim MensajeLOG As New StringBuilder
|
||||||
|
|
||||||
|
MensajeLOG.AppendFormat("From:'{0}' - Para:'{1}' - Asunto:'{2}' - CCP: '{3}' - Adjuntos: {4}", ObjMail.ObjEmpresa.SendMail, ObjMail.Para, ObjMail.Asunto, ObjMail.CCP, If(ObjMail.Archivos IsNot Nothing, ObjMail.Archivos.Count, 0))
|
||||||
|
|
||||||
|
Try
|
||||||
|
|
||||||
|
Dim Correo As New MimeMessage()
|
||||||
|
Dim Mensaje As String = String.Empty
|
||||||
|
Dim ArrayPara() As String = ObjMail.Para.Replace(",", ";").Split(";"c)
|
||||||
|
Dim ArrayCCP() As String = ObjMail.CCP.Replace(",", ";").Split(";"c)
|
||||||
|
Dim ArrayBCC() As String = ObjMail.CCO.Replace(",", ";").Split(";"c)
|
||||||
|
|
||||||
|
If ObjMail.De = String.Empty Then
|
||||||
|
Correo.From.Add(New MailboxAddress(ObjMail.ObjEmpresa.SendMail, ObjMail.ObjEmpresa.SendMail))
|
||||||
|
Else
|
||||||
|
Correo.From.Add(New MailboxAddress(ObjMail.De, ObjMail.ObjEmpresa.SendMail))
|
||||||
|
End If
|
||||||
|
|
||||||
|
If ArrayPara IsNot Nothing AndAlso ArrayPara.Length > 0 Then
|
||||||
|
For Each CorreoPara As String In ArrayPara.Distinct
|
||||||
|
If IsMail(CorreoPara.Trim) Then Correo.To.Add(New MailboxAddress(CorreoPara.Trim, CorreoPara.Trim))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
If ArrayCCP IsNot Nothing AndAlso ArrayCCP.Length > 0 Then
|
||||||
|
For Each CorreoCCPPara As String In ArrayCCP.Distinct
|
||||||
|
If IsMail(CorreoCCPPara.Trim) Then Correo.To.Add(New MailboxAddress(CorreoCCPPara.Trim, CorreoCCPPara.Trim))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
If ArrayBCC IsNot Nothing AndAlso ArrayBCC.Length > 0 Then
|
||||||
|
For Each CorreoCCOPara As String In ArrayBCC.Distinct
|
||||||
|
If IsMail(CorreoCCOPara.Trim) Then Correo.Bcc.Add(New MailboxAddress(CorreoCCOPara.Trim, CorreoCCOPara.Trim))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
Correo.Subject = ObjMail.Asunto
|
||||||
|
|
||||||
|
Dim builder As New BodyBuilder()
|
||||||
|
' Set the html version of the message text
|
||||||
|
builder.HtmlBody = Mensaje & ObjMail.Body
|
||||||
|
|
||||||
|
Correo.Body = New TextPart("html") With {.Text = Mensaje & ObjMail.Body}
|
||||||
|
'Correo.IsBodyHtml = True
|
||||||
|
'Correo.Priority = Net.Mail.MailPriority.Normal
|
||||||
|
If ObjMail.Archivos IsNot Nothing Then
|
||||||
|
For Each Item As ArchivoMail In ObjMail.Archivos
|
||||||
|
If Item.ArchivoBinario IsNot Nothing Then
|
||||||
|
builder.Attachments.Add(Item.NombreArchivo, New MemoryStream(Item.ArchivoBinario))
|
||||||
|
'Correo.Body.Attachments.Add(New MailKit.Attachment(Item.NombreArchivo, New MemoryStream(Item.ArchivoBinario)))
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
' Now we just need to set the message body and we're done
|
||||||
|
Correo.Body = builder.ToMessageBody()
|
||||||
|
|
||||||
|
|
||||||
|
Try
|
||||||
|
Using SMTP As New SmtpClient()
|
||||||
|
SMTP.Connect(ObjMail.ObjEmpresa.SendMailServer, ObjMail.ObjEmpresa.SendMailPuerto, SecureSocketOptions.Auto)
|
||||||
|
SMTP.Authenticate(ObjMail.ObjEmpresa.SendMail, ObjMail.ObjEmpresa.SendMailPassword)
|
||||||
|
|
||||||
|
SMTP.Send(Correo)
|
||||||
|
SMTP.Disconnect(True)
|
||||||
|
End Using
|
||||||
|
Retorno = True
|
||||||
|
Catch ex As Exception
|
||||||
|
Retorno = False
|
||||||
|
MensajeLOG.AppendLine(" ")
|
||||||
|
MensajeLOG.AppendFormat(" - Ocurrió un error al mandar correo.{0}", ex)
|
||||||
|
End Try
|
||||||
|
|
||||||
|
ObjMail = Nothing 'destruyo el contenido
|
||||||
|
|
||||||
|
Correo.Dispose()
|
||||||
|
Catch ex As Exception
|
||||||
|
Retorno = False
|
||||||
|
MensajeLOG.AppendLine(" ")
|
||||||
|
MensajeLOG.AppendFormat(" - Ocurrió Cargar datos Correo.{0}", ex)
|
||||||
|
End Try
|
||||||
|
|
||||||
|
MensajeLOG.ToString().GuardaLogMail()
|
||||||
|
MensajeLOG.Clear()
|
||||||
|
|
||||||
|
Return Retorno
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function FinalSendOld(ObjMail As Mail) As Boolean
|
||||||
|
|
||||||
|
If ObjMail.Para = "" Then
|
||||||
|
Dim Msg As String = $"No se especifico a remitente - {ObjMail.Asunto}"
|
||||||
|
Msg.GuardaLogMail()
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
|
||||||
Dim Retorno As Boolean = False
|
Dim Retorno As Boolean = False
|
||||||
Dim MensajeLOG As New StringBuilder
|
Dim MensajeLOG As New StringBuilder
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user