Tener problemas para enviar una imagen por correo electrónico como una imagen incrustada en el cuerpo. El archivo de imagen se muestra como un archivo adjunto que está bien, pero la parte de la imagen en línea solo se muestra como una x roja.
Esto es lo que tengo hasta ahora
LinkedResource inline = new LinkedResource(filePath);
inline.ContentId = Guid.NewGuid().ToString();
MailMessage mail = new MailMessage();
Attachment att = new Attachment(filePath);
att.ContentDisposition.Inline = true;
mail.From = from_email;
mail.To.Add(data.email);
mail.Subject = "Client: " + data.client_id + " Has Sent You A Screenshot";
mail.Body = String.Format(
"<h3>Client: " + data.client_id + " Has Sent You A Screenshot</h3>" +
@"<img src=""cid:{0}"" />", inline.ContentId);
mail.IsBodyHtml = true;
mail.Attachments.Add(att);
inline.ContentId
, cuando en realidad debería seratt.ContentId
.inline
no es necesario en absoluto. Prefiero tu pregunta a todas las respuestas, ya que realmente no necesitas usar unAlternateView
.Respuestas:
Prueba esto
fuente
Un código C # mínimo para incrustar una imagen puede ser:
fuente
LinkedResource
que funcione en el cliente web de Hotmail / Outlook.com. FWIW, probé esto así como @Microsoft DN y funcionó mejor.NewGuid()
, laAttachmentBase
clase (queLinkedResource
hereda de) ya lo crea si es necesario.fuente
Además de los comentarios anteriores, tengo los siguientes comentarios adicionales:
"cid:att-001"
esto NO funciona en iPhone (nivel de parche de finales de 2016), más bien use alfanumérico puro"cid:att-001" -> "cid:att001"
Como un aparte. La representación de Outlook (incluso Office 2015) (todavía la clara mayoría para los usuarios de negocios) requiere el uso de HTML estilo TABLE TR TD ya que no es totalmente compatible con el modelo de cuadro HTML.
fuente
Un ejemplo aún más minimalista:
fuente
Prueba esto.
fuente
Necesita agregar el LinkedResource en un AlternateView
fuente
fuente
La otra solución es adjuntar la imagen como archivo adjunto y luego hacer referencia al código html usando cid. Código HTML:
Código C #:
fuente
fuente
Todos tenemos nuestros estilos de codificación preferidos. Esto es lo que hice:
fuente
Agregué el código completo a continuación para mostrar imágenes en Gmail, Thunderbird y otros clientes de correo electrónico:
fuente