Bilder in E-Mails einbinden

Bilder sollte man nicht als data URIs einbinden, da dies nicht mit allen Mailprogrammen kompatibel ist, besonders Gmail. Eine Lösung als Attachment mit Content ID ist allgemein die beste Lösung hierfür. Clients sollten diese Bilder nicht blockieren, da das Bild nicht remote liegt.

Im Fließtext kann das Bild über seine ContentId eingesetzt werden. Also zum Beispiel <img src=cid:image1>. Ein Komplettbeispiel finden Sie weiter unten.

Das ist dann eine multipart/mixed, multipart/alternative, multipart/related message wo der Bild Anhang im im related Teil ist.

var mailMessage = new MailMessage(
    "mailplus@ruthardt-kunden.de",
    "empfänger@gmail.com",
    "Email mit eingebetteten Bildern",
    "<html><body><img src=cid:image1></body></html>")
{
    IsBodyHtml = true
};

var image = File.ReadAllBytes("Panda.jpg");

using var strm = new MemoryStream(image);
strm.Position = 0;

var data = new Attachment(strm, "Panda.jpg");
data.ContentId = "image1";
// data.ContentDisposition.Inline = true;
mailMessage.Attachments.Add(data);

using var smtpClient = new SmtpClient
{
    Host = "smtp.gmail.com",
    Credentials = new NetworkCredential("username", "…"),
    Port = 587,
    EnableSsl = true,
};

smtpClient.Send(mailMessage);

Last updated