You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SendGrid是否支持.NET MailMessage中AlternateViews及本地图片嵌入邮件场景?

SendGrid对.NET MailMessage相关功能的支持

1. 对应AlternateViews的多视图实现

SendGrid没有和.NET MailMessage.AlternateViews完全同名的API,但核心的多格式/多视图邮件需求是完全支持的。在SendGrid .NET SDK中,你可以通过添加多个Content实例来实现:

  • 最常见的场景是同时提供纯文本(text/plain)和HTML(text/html)两种视图,邮件客户端会自动选择合适的版本显示;
  • 如果需要多个HTML视图(比如适配不同客户端的渲染规则),也可以添加多个text/html类型的Content,通过设置标识或依赖客户端的优先级处理逻辑。

示例代码:

var sendGridMsg = new SendGridMessage();
// 添加纯文本视图
sendGridMsg.AddContent(MimeType.Text, "纯文本格式的邮件内容");
// 添加HTML视图
sendGridMsg.AddContent(MimeType.Html, "<div>HTML格式的邮件内容</div>");

2. 本地图片嵌入邮件的支持

SendGrid完全支持你之前用LinkedResource+CID的图片嵌入方案,实现逻辑和.NET原生方式类似,步骤如下:

  • 读取本地图片文件为字节数组,创建Attachment对象;
  • 为Attachment设置唯一的ContentId(比如"report-img-001");
  • 将HTML报告中图片的src属性替换为src="cid:report-img-001";
  • 将该Attachment添加到邮件的附件集合中,SendGrid会自动关联CID和HTML内容。

示例代码:

// 读取本地图片
byte[] imageData = File.ReadAllBytes(@"D:\reports\chart.png");
// 创建带CID的附件
var embeddedImage = new Attachment
{
    Content = Convert.ToBase64String(imageData),
    Type = "image/png",
    Filename = "chart.png",
    ContentId = "report-img-001"
};
// 构建邮件
var sendGridMsg = new SendGridMessage();
sendGridMsg.AddAttachment(embeddedImage);
// 替换HTML中的图片路径
string modifiedHtml = originalReportHtml.Replace(@"src=""D:\reports\chart.png""", @"src=""cid:report-img-001""");
sendGridMsg.AddContent(MimeType.Html, modifiedHtml);

内容的提问来源于stack exchange,提问作者Salcio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 03:06:23