none
Enviar un email con imagen embebida en el cuerpo del mensaje RRS feed

  • Pregunta

  • Hola:

     Desde mi aplicación WindowsForms deseo enviar un correo electrónico con una imagen embebida la idea es que cuando el usuario abra el email pueda ver la imagen en el cuerpo del correo, algo como esto:

    Estoy trabajando con este código:

    public void send()
    {
        EMailSetting eMailSetting = _boEnterprise.EMailSetting();
        EEnterprise enterprise = _boEnterprise.GetEnterpriseData();
    
        string htmlBody = "<html><body><h1>Picture</h1><br><img src=\"cid:Imagen1\"></body></html>";
        AlternateView avHtml = AlternateView.CreateAlternateViewFromString
           (htmlBody, null, MediaTypeNames.Text.Html);
    
        LinkedResource inline = new LinkedResource("Imagen1.jpg", MediaTypeNames.Image.Jpeg);
        inline.ContentId = Guid.NewGuid().ToString();
        avHtml.LinkedResources.Add(inline);
    
        MailMessage mail = new MailMessage();
        mail.AlternateViews.Add(avHtml);
    
        Attachment att = new Attachment(@"D:\...\Debug\Imagen1.jpg");
        att.ContentDisposition.Inline = true;
    
        mail.From = new MailAddress(eMailSetting.UserName);
        mail.To.Add("xxxxxx@hotmail.com");
        mail.Subject = "Client: ffffff Has Sent You A Screenshot";
        mail.Body = String.Format(
                   "<h3>Client: yyyyy Has Sent You A Screenshot</h3>" +
                   @"<img src=""cid:{0}"" />", inline.ContentId);
    
        mail.IsBodyHtml = true;
        mail.Attachments.Add(att);
    
        SmtpClient smtp = new SmtpClient
        {
            Credentials =
                new NetworkCredential(eMailSetting.UserName, eMailSetting.Password),
            Host = eMailSetting.Servidor,
            Port = eMailSetting.Puerto,
            EnableSsl = eMailSetting.Ssl
        };
        smtp.Send(mail);
        mail.Dispose();
    }
    El problema es que la imagen no se muestra en el cuerpo sino únicamente adjunta al correo...


    Saludos desde Monterrey, Nuevo León, México!!!

    sábado, 14 de junio de 2014 0:44

Respuestas

  • Hola:

     Gracias Leandro, el problema estaba en la linea que mencionas, la cambiar el valor del ContentId por "Imagen1" me funciono sin problemas.


    Saludos desde Monterrey, Nuevo León, México!!!

    sábado, 14 de junio de 2014 2:04

Todas las respuestas

  • mm que raro, porque si emebbes la imagen como resorce del mail y usas el cid correctamente deberia funcionar

    MailMessage – Adjuntar Imagen en el cuerpo del Mail (3/3)

    valida que defines en el cid el mismo nombre que indicas en el ContentId del LinkedResources

    porque usas

     inline.ContentId = Guid.NewGuid().ToString();

    eso no es correcto

    deberias usar

     inline.ContentId = "Imagen1";

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    sábado, 14 de junio de 2014 1:34
  • Hola:

     Gracias Leandro, el problema estaba en la linea que mencionas, la cambiar el valor del ContentId por "Imagen1" me funciono sin problemas.


    Saludos desde Monterrey, Nuevo León, México!!!

    sábado, 14 de junio de 2014 2:04
  • Buenas tardes Jose Luis

    Me puedes proporcionar un correo donde contactarte necesito terminar un desarrollo que empezo alguien pero no lo termino y quisiera conversar contigo.

    Disculpa y Gracias.

    lunes, 11 de junio de 2018 21:40