Referéncias usadas:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Mail;
using System.Net;
using System.Net.Mime;
using System.Net;
using System.Net.Mime;
******************************************************************************
///
/// Estructura montada con las distintas partes del mensaje
/// para almacenar el correo electrónico
/// ** Notas: **
///========================================================================
/// [bHTML]= true
/// Se debe montar el cuerpo del mensaje en HTML,
/// y colocar los tags correspondientes a un documento HTML.
/// Por cada imagen, en el cuerpo del mensaje, se debe colocar
/// en su posición el tag: <img src=""cid:logo"">
///========================================================================
/// Si queremos enviar una mail a su destinatario y ocultar todas sus copias
/// debemos poner el parámetro [bOculto] = true y dejar [sBCC]= string.Empty,
/// pasarle todas las direcciones en [sDestinatario]:
/// la primera dirección la del destinatario original
/// y despues cada dirección de copia, todas separadas por un ';'.
///
/// Estructura montada con las distintas partes del mensaje
/// para almacenar el correo electrónico
/// ** Notas: **
///========================================================================
/// [bHTML]= true
/// Se debe montar el cuerpo del mensaje en HTML,
/// y colocar los tags correspondientes a un documento HTML.
/// Por cada imagen, en el cuerpo del mensaje, se debe colocar
/// en su posición el tag: <img src=""cid:logo"">
///========================================================================
/// Si queremos enviar una mail a su destinatario y ocultar todas sus copias
/// debemos poner el parámetro [bOculto] = true y dejar [sBCC]= string.Empty,
/// pasarle todas las direcciones en [sDestinatario]:
/// la primera dirección la del destinatario original
/// y despues cada dirección de copia, todas separadas por un ';'.
///
public struct sCorreoElectronico
{
///
/// string con la descripción y dirección de mail de la persona
/// o entidad que origina el mail
/// [De <dirección de mail>]
/// Ejemplo; "Registro USUARIO <usuario@hotmail.com>"
///
/// string con la descripción y dirección de mail de la persona
/// o entidad que origina el mail
/// [De <dirección de mail>]
/// Ejemplo; "Registro USUARIO <usuario@hotmail.com>"
///
public string sOrigen;
///
/// string con el nombre del emisor a mostrar.
/// [nombre] "Registro USUARIO"
///
/// string con el nombre del emisor a mostrar.
/// [nombre] "Registro USUARIO"
///
public string sNombreOrigen;
///
/// string con la direccion de mail del destinatario.
///
/// string con la direccion de mail del destinatario.
///
public string sDestinatario;
///
/// string con la lista de las direcciones a quien debemos enviar una copia.
/// Separadas por un ';'.
///
/// string con la lista de las direcciones a quien debemos enviar una copia.
/// Separadas por un ';'.
///
public string sCC;
///
/// string con el asunto del mensaje.
///
/// string con el asunto del mensaje.
///
public string sAsunto;
///
/// string con el mensaje a enviar.
///
/// string con el mensaje a enviar.
///
public string sCuerpoMensaje;
///
/// integer para definir la prioridad del mensaje
/// 0. Normal; 1. Baja; 2. Alta
///
/// integer para definir la prioridad del mensaje
/// 0. Normal; 1. Baja; 2. Alta
///
public int nPrioridad;
///
/// string con la ruta del archivo adjunto.
///
/// string con la ruta del archivo adjunto.
///
public string sAdjuntos;
///
/// Servidor SMTP de la cuenta de correo electrónico
/// Ejemplo; 'telefonica.smtp.net'
///
/// Servidor SMTP de la cuenta de correo electrónico
/// Ejemplo; 'telefonica.smtp.net'
///
public string sSMTP;
///
/// Nombre del usuario de la cuenta de correo electrónico
/// Ejemplo; 'MiUsuario'
///
/// Nombre del usuario de la cuenta de correo electrónico
/// Ejemplo; 'MiUsuario'
///
public string sUsuario;
///
/// Contraseña del usuario del correo electrónico
/// Ejemplo; 'MiPassWorD11'
///
/// Contraseña del usuario del correo electrónico
/// Ejemplo; 'MiPassWorD11'
///
public string sPassword;
///
/// bool true para indicar que el cuerpo del mensaje será en formato HTML.
///
/// bool true para indicar que el cuerpo del mensaje será en formato HTML.
///
public bool bHTML;
///
/// es un string montado según:
/// (@'[ID]:[ruta completa del archivo]; [ID]:[ruta completa del archivo]')
/// Ejemplo: D:\Informe\Imgs\logo.gif;logo_pie=D:\Informe\Imgs\logo_pie.gif'
///
/// es un string montado según:
/// (@'[ID]:[ruta completa del archivo]; [ID]:[ruta completa del archivo]')
/// Ejemplo: D:\Informe\Imgs\logo.gif;logo_pie=D:\Informe\Imgs\logo_pie.gif'
///
public string sListaImagenes;
///
/// Valor para decidir cuando queremos recibir las notificaciones.
/// Enumeración DeliveryNotificationOptions,
/// posibles valores: Delay, Never, None, OnFailure, OnSuccess.
///
/// Valor para decidir cuando queremos recibir las notificaciones.
/// Enumeración DeliveryNotificationOptions,
/// posibles valores: Delay, Never, None, OnFailure, OnSuccess.
///
public DeliveryNotificationOptions dnNotificaciones;
///
/// bool true si queremos enviar copia/s oculta/s
///
/// bool true si queremos enviar copia/s oculta/s
///
public bool bOculto;
///
/// string montado con las direcciones de copia oculta separadas por un ';'.
///
/// string montado con las direcciones de copia oculta separadas por un ';'.
///
public string sBCC;
}
La función:
****************************************************************************************************
///
/// Enviar un mail
///
/// Enviar un mail
///
///
Recibe una estructura sCorreoElectronico/// true: si se ha enviado correctamente; false: en caso contrario
public bool EnviarMail(sCorreoElectronico sCE)
{
string[] sDireccion = sCE.sDestinatario.Split(';');
string[] sBC = sCE.sDestinatario.Split(';');
bool bResult = true;
MailMessage mmMensaje = new MailMessage();
SmtpClient scSMTP = new SmtpClient(sCE.sSMTP);
MailAddress maDireccion = new MailAddress(sCE.sOrigen, sCE.sNombreOrigen);
try
{
mmMensaje.From = maDireccion;
mmMensaje.To.Add(sDireccion[0]);
if (sDireccion.Length > 1)
{
foreach (string sDir in sDireccion)
{
if (sCE.bOculto)
mmMensaje.Bcc.Add(sDir);
else
mmMensaje.CC.Add(sDir);
}
}
if (!string.IsNullOrEmpty(sCE.sBCC))
{
sBC = sCE.sBCC.Split(';');
foreach (string sB in sBC) { mmMensaje.Bcc.Add(sB); }
}
mmMensaje.Subject = sCE.sAsunto;
mmMensaje.DeliveryNotificationOptions = sCE.dnNotificaciones;
mmMensaje.IsBodyHtml = sCE.bHTML;
if (sCE.bHTML && !string.IsNullOrEmpty(sCE.sListaImagenes))
{
AlternateView avVista =
AlternateView.CreateAlternateViewFromString(sCE.sCuerpoMensaje, null, ypeNames.Text.Html);
string[] sImagenes = sCE.sListaImagenes.Split(';');
LinkedResource[] lrImagen = new LinkedResource[sImagenes.Length - 1];
for (int nL = 0; nL > sImagenes.Length - 1; nL++)
{
string[] sImg = sCE.sListaImagenes.Split('=');
lrImagen[nL] = new LinkedResource(sImg[1], MediaTypeNames.Image.Gif);
lrImagen[nL].ContentId = sImg[0];
avVista.LinkedResources.Add(lrImagen[nL]);
}
mmMensaje.AlternateViews.Add(avVista);
}
mmMensaje.Body = sCE.sCuerpoMensaje;
if (!string.IsNullOrEmpty(sCE.sAdjuntos))
{
Attachment aAdjunto = new Attachment(sCE.sAdjuntos);
mmMensaje.Attachments.Add(aAdjunto);
}
switch (sCE.nPrioridad)
{
case 1: mmMensaje.Priority = MailPriority.Low; break;
case 2: mmMensaje.Priority = MailPriority.High; break;
default: mmMensaje.Priority = MailPriority.Normal; break;
}
scSMTP.Credentials = new NetworkCredential(sCE.sUsuario, sCE.sPassword);
scSMTP.Send(mmMensaje);
}
catch (Exception ex)
{
bResult = false;
}
return bResult;
}