[英]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.