我正在使用 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("[email protected]");
var subject = "Hi There!";
var to = new EmailAddress("[email protected]");
var plainTextContent = "Hello";
var htmlContent = sb.ToString();
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
msg.SetFrom(from, "abc");
var sendingResult = SendMail(msg);
uj5u.com熱心網友回復:
你把報價放在錯誤的地方:
sb.Append("<a href='someurl'><img src='cid:myImage.png'> Login in</a>");
uj5u.com熱心網友回復:
我不知道LinkedResourceorAlternateView類做什么,但它們似乎不是 Twilio SendGrid C# 庫的一部分。
庫檔案中有一個發送附件的示例,但它沒有顯示如何處理電子郵件中的內容。但它很接近。關鍵是您需要加載要附加的檔案并將其轉換為base64,然后使用該AddAttachment方法將其作為行內附件添加到您的郵件中,并傳遞cid您可以在正文中參考的內容ID()訊息。就像是:
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("[email protected]");
var subject = "Hi There!";
var to = new EmailAddress("[email protected]");
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 中參考影像時應使用“行內”)和cid. 另請注意,這cid是您應該用來參考影像的整個字串,因此如果影像cid是“myImage”,那么您應該將其稱為cid:myImage,例如:
sb.Append("<a href='someurl'><img src='cid:myImage'> Login in</a>");
uj5u.com熱心網友回復:
您的主要問題是您的圖片網址。在電子郵件部分,您不能直接從您的目錄加載影像,因為您必須在某些服務器上上傳并在您的 img src 中使用該影像鏈接。你可以這樣使用
sb.Append("<a href='https://someserverurl.com/front-layout/images/confirmpass_Artboard 1.png'> Login in</a>");
這將解決您的問題。您的影像必須位于某個實時鏈接上才能訪問。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/484798.html
