2016-08-09 12 views
2

Ich verwende die SendGrid v3 API und C# -Bibliothek (v7), um eine E-Mail zu senden. In meiner E-Mail habe ich eine Kopfzeile, die ein PNG ist. Der Header ist wie folgt eingebettet:SendGrid - Bild nicht in HTML-E-Mail angezeigt

<img src="cid:emailheader"/> 

Im C# -Code ich das Bild als Anlage mit der gleichen contentid

var mail = neuer Mail (Absender, Betreff, an, Content) zu senden;

var headerPath = HttpContext.Current.Server.MapPath("~/Resources/email-header.png"); 

var attachment = new SendGrid.Helpers.Mail.Attachment(); 
attachment.ContentId = "emailheader"; 
attachment.Content = Convert.ToBase64String(File.ReadAllBytes(headerPath)); 
attachment.Type = "image/png"; 
attachment.Filename = "email-header.png"; 
mail.AddAttachment(attachment); 

var send = sg.client.mail.send.post(requestBody: mail.Get()); 

Doch wenn ich die E-Mail öffnen, es sagt die Quelle nicht gefunden, obwohl das Bild korrekt in der Anlage

enter image description here

+0

Ich glaube, Sie müssen das Bild in HTML Mail Körper einzubetten, anstatt sie als Anlage zu tun. –

+0

Ich denke, dass Sie die Inhaltsdisposition 'inline' einstellen müssen, wenn Sie es anhängen, um es mit einer' cid' zu verwenden. Siehe hier: https://github.com/sendgrid/sendgrid-csharp/blob/master/SendGrid/SendGrid/Helpers/Mail/Mail.cs#L990 –

Antwort

1

Ich bin der Experte nicht für Sendgrid angezeigt wird, aber Ich fand dort blog post , dass dies vorschlagen, Inline-Codierung in Ihrem HTML direkt zu tun. Auf diese Weise müssen Sie keinen Anhang hinzufügen. (Ich benutze das ziemlich viel)

<img alt="My Image" src="data:image/jpeg;base64,/9j/4S/+RXhpZgAATU0AKgA...more encoding" /> 

Vielleicht ist dies eine Arbeit für Sie.

Als zweite Alternative: für mich E-Mails mit Bildern aussendet bin mit

System.Net.Mail

hier ich eine Alternate mit einer verknüpften Ressource hinzufügen tun.

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, null, "text/html"); 
LinkedResource imageResource = new LinkedResource(Imagepath + "Monitoring.png", "image/png") 
{ 
    ContentId = "1", 
    TransferEncoding = System.Net.Mime.TransferEncoding.Base64 
}; 
htmlView.LinkedResources.Add(imageResource); 
message.AlternateViews.Add(htmlView); 

die Syntax in HTML ist die gleiche wie Sie

<img src="cid:1"> 

verwende ich diese Hilfe hoffen. Butti

0

Integrieren Sie das Bild in HTML-Text. <html> <body> <img src="cid:emailheader"/> ' `