我正在嘗試在使用 Sendgrid C# 9.28.1 發送的電子郵件中嵌入影像。但不知何故,影像不顯示。也不再有一個名為 EmbedImage 的函式。有沒有辦法做到這一點?
var client = new SendGridClient(_settings.ApiKey);
var myMessage = new SendGridMessage();
myMessage.AddTo(entity.Email);
myMessage.From = new EmailAddress(_settings.FromAddress, _settings.FromName);
myMessage.Subject = $"{_settings.FromName} - Image TEST";
var body = "<div style=\"width:200px;\"><img src=\"cid::IMAGE01\"/></div>"
@"<p>Test message?</p>";
var attachment = new SendGrid.Helpers.Mail.Attachment
{
ContentId = "IMAGE01",
Content = entity.Base64ImageString,
Type = "image/png",
Filename = "image.png"
};
myMessage.AddAttachment(attachment);
myMessage.HtmlContent = body;
await client.SendEmailAsync(myMessage);
uj5u.com熱心網友回復:
我能夠復制您的問題。運行您的代碼時,我看到附加的影像,但沒有行內到電子郵件的正文中。
為了解決這個問題,我添加了Disposition
屬性并將其設定為"inline"
.
message.AddAttachment(new Attachment
{
ContentId = "IMAGE01",
Content = Convert.ToBase64String(File.ReadAllBytes("image.png")),
Type = "image/png",
Filename = "image.png",
Disposition = "inline" // important!
});
一旦我添加了屬性,影像就會行內顯示。(我也在 HTML 中使用一個:
而不是兩個:
,所以cid:
不是cid::
但不確定它是否重要。
這是我的電子郵件源中沒有該Disposition
屬性的部分:
<html>
<body>
<img src=3D"cid:IMAGE01"/>
</body>
</html>
--d0e309773e8692891fcbf3a6dc18894582dea28d62adfe2bd8fd84a96b90
Content-Disposition: attachment; filename="image.png"
Content-Transfer-Encoding: base64
Content-Type: image/png; name="image.png"
請注意如何IMAGE01
僅出現在 HTML 中,而不是在附件中。
這是與Disposition
財產:
<html>
<body>
<img src=3D"cid:IMAGE01"/>
</body>
</html>
--5bb4b7a345af921dc9094ee0d66495c2a390a8aa6e89c2a41d96f8af8af5
Content-Disposition: inline; filename="image.png"
Content-ID: <IMAGE01>
Content-Transfer-Encoding: base64
Content-Type: image/png; name="image.png"
注意現在有一個Content-ID: <IMAGE01>
引數。
話雖如此,還有兩種選擇,您可以使用資料 URL 將 base64 資料嵌入到 HTML 中,也可以將影像上傳到互聯網并參考它。
你可以在這里找到源代碼:https ://github.com/Swimburger/SendGridImages/blob/main/Program.cs
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/516117.html