Enviar correo con imágenes adjuntas

Enviar un correo en .NET es relativamente fácil, pero hasta ahora no me había topado con la necesidad de enviarlo con archivos adjuntos, más específicamente con una imagen adjunta y que ésta pueda ser visualizada por un cliente de correo normal.

Para poder enviar imágenes o cualquier otro tipo de archivo adjunto al correo, se debe primero agregar el objeto a adjuntar con una etiqueta HTML, en nuestro caso de una imagen usaremos la etiqueta <img> pero en su atributo src haremos referencia a un un ID definido por nosotros el cual usaremos después para poder conectarlos, quedando de la siguiente forma: <img src=’cid:embeddedImage’ />. Para lograr ‘sustituir’ el atributo src de la etiqueta vamos a utilizar un objeto llamado LinkedResource, este será el que sirva de ‘puente’ entre el recurso y la etiqueta que lo contiene en el cuerpo html del mensaje, entonces primero instanciamos un objeto de la clase LinkedResource, y en su constructor le enviamos el path donde se encuentra el recurso en este caso la imagen llamada computador.gif, luego de esto la vinculamos con el mensaje asignándole a la propiedad ContentId el ID que previamente definimos en la etiqueta del mensaje, en nuestro caso embeddedImage, ya nos resta enviar el mensaje y hacer un poco de carpintería, les dejo el código y una imagen del resultado final.

Código:


using System;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Net.Mime;
using System.Text;

public partial class _Default : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{

MailMessage Mail = new MailMessage();

Mail.From = new MailAddress("DireccionOrigen");

Mail.To.Add("DireccionDestino");

Mail.Subject  =  "Correo  de ejemplo";

string  PlainMessageBody  =  "Este  es un correo con una imagen como adjunto";

string  HTMLMessageBody  =  "<b>Este  es un correo con una imagen como adjunto</b> <br /><img  src='cid:embeddedImage' />";

AlternateView TextView = AlternateView.CreateAlternateViewFromString(PlainMessageBody, Encoding.UTF8, MediaTypeNames.Text.Plain);

AlternateView HTMLView = AlternateView.CreateAlternateViewFromString(HTMLMessageBody, Encoding.UTF8, MediaTypeNames.Text.Html);

LinkedResource Image = new LinkedResource(@"C:\Images\computador.gif", MediaTypeNames.Image.Gif);
Image.ContentId = "embeddedImage";

HTMLView.LinkedResources.Add(Image);

Mail.AlternateViews.Add(TextView);
Mail.AlternateViews.Add(HTMLView);

SmtpClient SMTPConnection = new SmtpClient();
SMTPConnection.Host = "HostCorreo";
SMTPConnection.Port = 25;
SMTPConnection.Credentials = new System.Net.NetworkCredential("usuario", "contrase&ntilde;a");
SMTPConnection.Send(Mail);

}
}

Resultado:

Happy coding!

Proco

Software engineer, Gamer, Husband.

También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *