簡體   English   中英

使用 sendgrid 發送圖片 C#

[英]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>");

我不知道LinkedResourceAlternateView類的作用,但它們似乎不是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM