none
Enviar imagen en correo embebido. RRS feed

  • Pregunta

  • Que tal compañeros; tengo una aplicacion en C# VS 2005, donde estoy enviando un correo por medio de un servicio web. El detalle es que no se puede visualizar la imagen que declaro en el archivo htm. mi logica es la siguiente para enviar el correo,

    Leo por medio de un StreamReader un archivo tipo html, en el html tengo la imagen declarada en un tag <p><img src="img.jpg"></p>, que finalmente quiero mostrarlo al enviar el correo, el objeto StreamReader lo leo con su propiedad ReadToEnd() y se lo asigno a un objeto string que finalmente es el Body que mando al servicio web. pero cuando me llega el correo la imagen no se visualiza. el codigo para leer esta de la siguiente manera:

    string message = string.Empty;
    StreamReader format = new StreamReader(Server.MapPath("MailDocRec.htm"));
    message = format.ReadToEnd();

    Alguna idea de como hacer que se vea la imagen


    Si crees que la educación es cara, prueba con la ignorancia
    jueves, 16 de diciembre de 2010 22:22

Respuestas

  • Hola

    Mira si te sirve este ejemplo, que empotra en el e-mail todas las imagenes que encuentra en un HTML (como es tu caso): http://www.codeproject.com/KB/IP/embedemailimages.aspx

    O mira este código, más simple:

    static void EmbedImages()
    {
    //create the mail message
    MailMessage mail = new MailMessage();
    
    //set the addresses
    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");
    
    //set the content
    mail.Subject = "This is an email";
    
    //first we create the Plain Text part
    AlternateView plainView = AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", null, "text/plain");
    
    //then we create the Html part
    //to embed images, we need to use the prefix 'cid' in the img src value
    //the cid value will map to the Content-Id of a Linked resource.
    //thus <img src='cid:companylogo'> will map to a LinkedResource with a ContentId of 'companylogo'
    AlternateView htmlView = AlternateView.CreateAlternateViewFromString("Here is an embedded image.<img src=cid:companylogo>", null, "text/html");
    
    //create the LinkedResource (embedded image)
    LinkedResource logo = new LinkedResource( "c:\\temp\\logo.gif" );
    logo.ContentId = "companylogo";
    //add the LinkedResource to the appropriate view
    htmlView.LinkedResources.Add(logo);
    
    //add the views
    mail.AlternateViews.Add(plainView);
    mail.AlternateViews.Add(htmlView);
    
    
    //send the message
    SmtpClient smtp = new SmtpClient("127.0.0.1"); //specify the mail server address
    smtp.Send(mail);
    }
    
    


    Please vote/mark the answer if it was helpful!
    Por favor vota/marca la respuesta si te ha ayudado!
    http://bmegias.wordpress.com
    http://twitter.com/bmegias
    jueves, 16 de diciembre de 2010 23:20
  • Hola,

     

    Te dejo este otro ejemplo, en el veras la forma de enviar la imagen embedida mediante un HTML o bien directamente, a la vez que es enviada a multiples usuarios.

    Embeder imagenes asp.net

    Y este otro, es un pequeño video tutorial que muestra tambien la forma de enviar imagenes.

    Video imagenes

     

    Saludos,



    Jason Ulloa
    Mi Blog
    jueves, 16 de diciembre de 2010 23:25

Todas las respuestas

  • Hola

    Mira si te sirve este ejemplo, que empotra en el e-mail todas las imagenes que encuentra en un HTML (como es tu caso): http://www.codeproject.com/KB/IP/embedemailimages.aspx

    O mira este código, más simple:

    static void EmbedImages()
    {
    //create the mail message
    MailMessage mail = new MailMessage();
    
    //set the addresses
    mail.From = new MailAddress("me@mycompany.com");
    mail.To.Add("you@yourcompany.com");
    
    //set the content
    mail.Subject = "This is an email";
    
    //first we create the Plain Text part
    AlternateView plainView = AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", null, "text/plain");
    
    //then we create the Html part
    //to embed images, we need to use the prefix 'cid' in the img src value
    //the cid value will map to the Content-Id of a Linked resource.
    //thus <img src='cid:companylogo'> will map to a LinkedResource with a ContentId of 'companylogo'
    AlternateView htmlView = AlternateView.CreateAlternateViewFromString("Here is an embedded image.<img src=cid:companylogo>", null, "text/html");
    
    //create the LinkedResource (embedded image)
    LinkedResource logo = new LinkedResource( "c:\\temp\\logo.gif" );
    logo.ContentId = "companylogo";
    //add the LinkedResource to the appropriate view
    htmlView.LinkedResources.Add(logo);
    
    //add the views
    mail.AlternateViews.Add(plainView);
    mail.AlternateViews.Add(htmlView);
    
    
    //send the message
    SmtpClient smtp = new SmtpClient("127.0.0.1"); //specify the mail server address
    smtp.Send(mail);
    }
    
    


    Please vote/mark the answer if it was helpful!
    Por favor vota/marca la respuesta si te ha ayudado!
    http://bmegias.wordpress.com
    http://twitter.com/bmegias
    jueves, 16 de diciembre de 2010 23:20
  • Hola,

     

    Te dejo este otro ejemplo, en el veras la forma de enviar la imagen embedida mediante un HTML o bien directamente, a la vez que es enviada a multiples usuarios.

    Embeder imagenes asp.net

    Y este otro, es un pequeño video tutorial que muestra tambien la forma de enviar imagenes.

    Video imagenes

     

    Saludos,



    Jason Ulloa
    Mi Blog
    jueves, 16 de diciembre de 2010 23:25