- es.davy.ai/
- Programación /
- MailMessage produce una estructura de origen de correo incorrecta que rompe las imágenes incrustadas en múltiples clientes.
MailMessage produce una estructura de origen de correo incorrecta que rompe las imágenes incrustadas en múltiples clientes.
Resumen: esencialmente, pregunto cómo hacer esto en .NET Core 3.1. Tengo esta jerarquía:
multipart / related
├── multipart / alternative
│ ├── text / plain
│ └── text / html
└── image / png
Versión completa:
Construyo un correo electrónico:
using (var mailMessage = new MailMessage (new MailAddress (“from@from.com”), new MailAddress (“to@to.com”))) {
mailMessage.Subject = mailContent.Subject;
var htmlView = AlternateView.CreateAlternateViewFromString (mailContent.Html, Encoding.UTF8, “text / html”);
htmlView.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;
htmlView.LinkedResources.Add (new LinkedResource (“image.png”)
{
ContentId = “imagecid”,
});
var plainView = AlternateView.CreateAlternateViewFromString (mailContent.Plain, Encoding.UTF8, “text / plain”);
plainView.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;
mailMessage.AlternateViews.Add (plainView);
mailMessage.AlternateViews.Add (htmlView);
usando (var smtpServiceClient = …))
smtpServiceClient.SendMessage (mailMessage);
}
La estructura que obtengo es:
Content-Type: multipart / alternative; boundary = -boundary_0_fe9da24c-3c5d-468a-bffb-388a6002a995
Fecha: 1 de diciembre de 2021 21:51:56 +0100
De: “xxx” <xxx.com>
Versión MIME: 1.0
Mensaje-ID: MQaSQxMTAs-VLocCm64ESW0i6DCc73eLuc9GUY9Fpbs = @ mailhog.example
Recibido: de xxxx por mailhog.example (MailHog)
id MQaSQxMTAs-VLocCm64ESW0i6DCc73eLuc9GUY9Fpbs = @ mailhog.example; Mié, 01 de dic de 2021 20:51:59 +0000
Return-Path: <xxx.com>
Asunto: xxx
Para: test1@test12.com
—- boundary_0_fe9da24c-3c5d-468a-bffb-388a6002a995
Content-Type: text / plain; charset = utf-8
Content-Transfer-Encoding: 7 bits
PLAIN_TEXT_REPRESENTATION_HERE
—- boundary_0_fe9da24c-3c5d-468a-bffb-388a6002a995
Content-Type: multipart / relacionado; tipo = “texto / html”;;
boundary = -boundary_1_4199b4eb-25b8-4c45-b11e-15b97d6ca815
—- boundary_1_4199b4eb-25b8-4c45-b11e-15b97d6ca815
Content-Type: text / html; charset = utf-8
Content-Transfer-Encoding: 7 bits
HTML_REPRESENATION_HERE
—- boundary_1_4199b4eb-25b8-4c45-b11e-15b97d6ca815
Content-Type: image / png
Content-Transfer-Encoding: base64
Content-ID:
base64_REPRESENTATION_HERE
—- boundary_1_4199b4eb-25b8-4c45-b11e-15b97d6ca815 —
—- boundary_0_fe9da24c-3c5d-468a-bffb-388a6002a995 —
lo que hace que algunos clientes no puedan representar imágenes incrustadas.
Lo que debería tener es:
multipart / related
├── multipart / alternative
│ ├── text / plain
│ └── text / html
└── image / png
pero no tengo control sobre él usando la clase MailMessage.
¿Cómo solucionarlo? Aquí hay alguien que tiene exactamente la misma estructura: https://github.com/mailhog/MailHog/issues/206#issuecomment-596502425</xxx.com></xxx.com>
Answer
Comments are closed.
davy.ai
Para lograr la estructura deseada del correo electrónico, es posible crear la estructura MIME manualmente utilizando la biblioteca “MimeKit” en lugar de utilizar la clase “MailMessage”. Aquí hay un ejemplo de cómo puede crear la estructura MIME con la jerarquía deseada:
Esto debería crear la estructura deseada del correo electrónico con “multipart/related” en el nivel superior, seguido de “multipart/alternative” y “image/png”.