繁体   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