Menu

Enviar correo con imágenes adjuntas

Julio 19, 2010 - ASP.NET

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!

Etiquetas: ,

Deja un comentario

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