[英]Send images using sendgrid C#
我正在使用 sendgrid 在郵件中發送圖像,但我不確定我的代碼有什么問題。 這是我的代碼:
string imgPath= Server.MapPath(@"~/Images/logo-img.png");
StringBuilder sb = new StringBuilder();
sb.Append("Hi There! I am using sendgrid to send images");
sb.Append("<a href='someurl'><img src='cid:myImage.png> Login in</a>");
LinkedResource lr = new LinkedResource(imgPath, "image/png");
lr.ContentId = "myImage";
AlternateView AV = AlternateView.CreateAlternateViewFromString(sb.ToString(), null, "image/png");
AV.LinkedResources.Add(lr);
var from = new EmailAddress("abc@bac.com");
var subject = "Hi There!";
var to = new EmailAddress("xyz@xyz.com");
var plainTextContent = "Hello";
var htmlContent = sb.ToString();
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
msg.SetFrom(from, "abc");
var sendingResult = SendMail(msg);
你把報價放在錯誤的地方:
sb.Append("<a href='someurl'><img src='cid:myImage.png'> Login in</a>");
我不知道LinkedResource
或AlternateView
類的作用,但它們似乎不是 Twilio SendGrid C# 庫的一部分。
庫文檔中有一個發送附件的示例,但它沒有顯示如何處理 email 中的內容。但它很接近。 關鍵是你需要加載你想要附加的文件並將其轉換為cid
,然后使用AddAttachment
方法將其作為內聯附件添加到你的郵件中,傳遞你可以在消息的正文。 就像是:
string imgPath= Server.MapPath(@"~/Images/logo-img.png");
StringBuilder sb = new StringBuilder();
sb.Append("Hi There! I am using sendgrid to send images");
sb.Append("<a href='someurl'><img src='cid:myImage'> Login in</a>");
var bytes = File.ReadAllBytes(imgPath);
var file = Convert.ToBase64String(bytes);
var from = new EmailAddress("abc@bac.com");
var subject = "Hi There!";
var to = new EmailAddress("xyz@xyz.com");
var plainTextContent = "Hello";
var htmlContent = sb.ToString();
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
msg.SetFrom(from, "abc");
msg.AddAttachment("logo-img.png", file, "image/png", "inline", "myImage");
var sendingResult = SendMail(msg);
在此更新的代碼中,重要部分將文件加載為 base64:
var bytes = File.ReadAllBytes(imgPath);
var file = Convert.ToBase64String(bytes);
並將文件附加到消息中:
msg.AddAttachment("logo-img.png", file, "image/png", "inline", "myImage");
AddAttachment
方法有 5 個參數:文件名、文件的 base64 內容、MIME 類型、內容配置(要引用 HTML 中的圖像,您應該使用“inline”)和cid
。 另請注意, cid
是您應該用來引用圖像的整個字符串,因此如果圖像cid
是“myImage”,那么您應該將其稱為cid:myImage
,例如:
sb.Append("<a href='someurl'><img src='cid:myImage'> Login in</a>");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.