Está en la página 1de 4

Enviar Correos electronicos con VB.

NET

1. Ejemplo de método para envío de correo


Descargar ejemplo de : ​https://github.com/rpias/UTU_POO_Ejemplo_P3
System.Net.Mail:​ librería que utilizaremos para realizar la tarea.
https://docs.microsoft.com/es-es/dotnet/api/system.net.mail?view=dotnet-plat-ext-3.1

Public Shared Sub EnviarCorreo(email_destino As String)

​ ' En este caso llamamos un método que nos devolverá el contenido del
' correo en HTML, pero tambien podria ser cualquier valor de tipo String
' que queramos enviar.
Dim mensaje As String = getMensajeCorreoListarEmpleados()

​ ' Servidor de correo


Dim servidor_correo_smtp As String = "servidor.correo.smtp"
​ ' Puerto del servidor smtp, si fuera necesario
Dim servidor_correo_smtp_puerto As Integer = 465
​ ' Casilla de correo de Origen
Dim casilla_origen As String = "​software@pias.uy​"
​ ' Password Casilla de correo de Origen
Dim pass_casilla_origen As String = "xxxxxxxxxx"
​ ' Asunto del mensaje
Dim asunto As String = " ASUNTO DEL MENSAJE - PRUEBA desde VB.NET"
​ ' Enviar con copia/s
Dim cc_email_destino As String = "software@gmail.com"
​ ' Enviar con copia/s Oculta
Dim cco_email_destino As String = "richard.pias.info@gmail.com"

​ ' Solo en caso de adjuntar archivo


Dim archivoAdjunto As Attachment = Nothing
Dim smtp As New SmtpClient()

Try
Dim correo As New MailMessage()
correo.From = New MailAddress(casilla_origen)
correo.Subject = asunto
correo.Priority = MailPriority.Normal
correo.Body = mensaje
correo.IsBodyHtml = True
correo.DeliveryNotificationOptions =
DeliveryNotificationOptions.OnFailure

​ '==================================================================
' AGREGO LAS CASILLAS DE CORREO DONDE VA EL EMAIL
'===================================================================

correo.To.Add(email_destino)
​ ' Casilla Con Copia
correo.CC.Add(cc_email_destino)
​' Casilla Con Copia Oculta
correo.Bcc.Add(cco_email_destino)
​'==================================================================
' ARCHIVOS ADJUNTOS
'==================================================================
'correo.Attachments.Add(archivoAdjunto)
'correo.Attachments.Add(new Attachment("C:\\file.zip"));
​ '==================================================================
​ ' Parámetros de configuración del servidor de correo smtp, la
‘ configuracion de estos parámetros depende del servidor a utilizar
'==================================================================
smtp.Host = servidor_correo_smtp
​'smtp.Port = servidor_correo_smtp_puerto
smtp.Credentials = New NetworkCredential(casilla_origen,
pass_casilla_origen)
​' Definir si tu servidor SMTP requiere autenticación
'smtp.UseDefaultCredentials = True
'smtp.DeliveryMethod = SmtpDeliveryMethod.Network
smtp.EnableSsl = True

​ '==================================================================
' ENVÍO EL CORREO
'==================================================================
smtp.Send(correo)
​ '==================================================================
​' Limpio el contenido de "correo" por si estuviera en un bucle
correo.Dispose()

Catch ex As SmtpFailedRecipientsException
​ ' Captura los errores que corresponden a la casilla de correo destino
For i As Integer = 0 To ex.InnerExceptions.Length - 1
Dim status As SmtpStatusCode = ex.InnerExceptions(i).StatusCode
If status = SmtpStatusCode.MailboxBusy Then
Throw New SmtpException("ERROR en EnviarCorreo :: " +
ex.Message)
ElseIf status = SmtpStatusCode.MailboxUnavailable Then
Throw New SmtpException("ERROR en EnviarCorreo :: " +
ex.Message)
Else
Throw New SmtpException("ERROR en EnviarCorreo :: " +
ex.Message)
End If
Next
Catch ex As SmtpException
​ ' Otros errores distintos a los anteriores que puede dar el envío
' Ejemplo no existe el servidor de correo
Throw New SmtpException("ERROR en EnviarCorreo :: " + ex.Message)
Catch ex As Exception
​' Cualquier otro error
Throw New Exception("ERROR en EnviarCorreo :: " + ex.Message)
End Try

End Sub
2. Ejemplo de método para crear cuerpo del correo con HTML

Private Shared Function getMensajeCorreoListarEmpleados() As String

Dim mensaje As String​ ​= ​"<html><head> <style type=""" & "text/css" & """>
.tftable {font-size:12px;color:#333333;width:100%;border-width:
1px;border-color: #729ea5;border-collapse: collapse;}
.tftable th {font-size:12px;background-color:#acc8cc;border-width:
1px;padding: 8px;border-style: solid;
border-color: #729ea5;text-align:left;}
.tftable tr {background-color:#d4e3e5;}
.tftable td {font-size:12px;border-width: 1px;padding:
8px;border-style: solid;border-color: #729ea5;}
.tftable tr:hover {background-color:#ffffff;}
</style></head><body>
<br>
<h2>Lista de Empleados</h2>
<br>
<table class=""" & "tftable" & """ border=""" & "1" & """>
<tr><th>Cédula</th><th>Nombre completo</th><th>Tipo
Empleado</th></tr>"

​For Each row As DataRow In EmpleadoADO.ListarEmpleadosReporte().Rows


​ mensaje &=​ ​"<tr>"
mensaje &= ​"<td>"​ & row("cedula") & ​"</td>"
mensaje &= ​"<td>"​ & row("nombre_completo") & ​"</td>"
mensaje &= ​"<td>"​ & row("tipo_empleado") &​ "</td>"
mensaje &= ​"</tr>"
​ Next row

​ mensaje &= ​"</table></body></html>"

​Return mensaje

End Function

' Metodo que trae los datos de la Base de Datos

Public Shared Function ListarEmpleadosReporte() As DataTable

Dim da As MySqlDataAdapter
Dim ds As New DataSet

Dim consulta As String = ​" SELECT P.cedula, CONCAT(P.primer_nombre, ' ',


P.segundo_nombre, ' ', P.primer_apellido, ' ', P.segundo_apellido) AS
nombre_completo, T.tipo_empleado FROM empleados AS E INNER JOIN personas
AS P ON P.id_persona = E.id_persona INNER JOIN tipos_empleados AS T ON
T.id_tipo_empleado = E.id_tipo "
Try
AbrirConexion()
da = New MySqlDataAdapter(consulta, _con)
da.Fill(ds)
CerrarConexion()

Catch ex As Exception
Throw New Exception("ERROR en ListarEmpleados() :: " + ex.Message)
End Try

Return ds.Tables(0)

End Function

También podría gustarte