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

ASP.NET发送HTML邮件时本地图片未在正文显示问题

问题原因

Server.MapPath返回的是Web服务器本地磁盘的物理路径,格式类似C:\inetpub\wwwroot\IQCSystem\Content\Uploads\image.jpg。你把这个路径直接拼到img的src属性里,邮件发送到收件人设备后,邮箱客户端会尝试在收件人本地磁盘查找这个路径的文件,根本访问不到你服务器上的存储资源,图片自然无法加载。

修复方案

最稳定的方案是使用内联资源(LinkedResource)将图片作为邮件的关联附件嵌入正文,不需要依赖公网访问,所有主流邮箱客户端都能正常显示,实现逻辑如下:

  • 给要嵌入的图片生成全局唯一的ContentId标识
  • 构造HTML格式的邮件 alternate view,正文里img标签的src使用cid:{ContentId}格式引用图片,不再使用本地物理路径
  • 将服务器本地图片读取为LinkedResource对象,绑定对应的ContentId,附加到邮件视图中
  • 将构造好的HTML视图添加到邮件对象中发送即可

对应实现代码参考:

// 生成唯一图片资源ID,避免和邮件内其他资源冲突
string imgContentId = Guid.NewGuid().ToString("N");

// 构造邮件正文,img标签通过cid引用内联图片
string email_body = "Item has been checked by QC with the following details.. ";
email_body += @"<table>";
// ...... 原有的表格行拼接逻辑保持不变 ......
// 缺陷图片行改为cid引用方式
email_body += $"<tr><td>Defective Picture</td><td>:</td><td><img src='cid:{imgContentId}' width='100' height='100' alt='defect img' style='margin:20px 0px 0px 20px'/></td></tr>";
email_body += "</table>";

// 构造HTML邮件视图
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(email_body, null, MediaTypeNames.Text.Html);

// 加载本地图片作为内联资源
string sImage = System.Web.HttpContext.Current.Server.MapPath("~/Content/Uploads/image.jpg");
LinkedResource defectImg = new LinkedResource(sImage, MediaTypeNames.Image.Jpeg);
defectImg.ContentId = imgContentId; // 和正文cid一一对应
defectImg.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
htmlView.LinkedResources.Add(defectImg);

// 组装邮件对象
MailMessage mailMsg = new MailMessage();
mailMsg.From = new MailAddress("你的发件箱地址");
mailMsg.To.Add(To);
mailMsg.Subject = Subject;
// 注意不要直接把email_body赋值给Body,要添加构造好的AlternateView
mailMsg.AlternateViews.Add(htmlView);

// 后续使用SmtpClient发送mailMsg即可

备选方案说明

如果你的系统图片可以通过站点的公网域名直接访问,也可以把img的src替换为图片的公网绝对地址(例如https://你的系统域名/Content/Uploads/image.jpg),但这种方式大部分邮箱客户端默认会拦截外链图片,需要收件人手动确认“显示图片”才能加载,稳定性弱于内联嵌入方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:06:27