使用sendgrid C#发送图像

问题描述 投票:0回答:2

我正在使用 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);
c# .net email sendgrid
2个回答
1
投票

我不知道

LinkedResource
AlternateView
类的用途,但它们似乎不属于 Twilio SendGrid C# 库。

库文档中有一个用于发送附件的示例,但它没有显示如何处理电子邮件中的内容。但已经很接近了。关键是您需要加载要附加的文件并将其转换为 base64,然后使用

AddAttachment
方法将其作为内联附件添加到您的邮件中,并传递内容 ID (
cid
),您可以请参阅邮件正文。比如:

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>");

0
投票

您将报价放在错误的位置:

sb.Append("<a href='someurl'><img src='cid:myImage.png'> Login in</a>");
© www.soinside.com 2019 - 2024. All rights reserved.