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

如何将wwwroot文件夹中的图片添加至邮件模板?

解决邮件模板中无法加载wwwroot图片的问题

问题原因

邮件客户端无法解析网站的相对路径(如/assets/icon-positive-vote-1.png),因为邮件的渲染环境和你的网站上下文完全独立,没有默认的基URL指向你的服务器,所以相对路径无法定位到图片资源。

解决方案

方案1:替换为绝对URL

直接将相对路径替换为包含域名的完整绝对URL,让邮件客户端能通过公网访问图片:

修改代码中的替换逻辑:

// 替换为你的实际域名,或者动态生成基URL
.Replace("[PICTURE1]", "https://your-domain.com/assets/icon-positive-vote-1.png")

如果是ASP.NET Core项目,推荐动态生成基URL避免硬编码(需要注入HttpContext或IWebHostEnvironment):

// 从HttpContext获取当前请求的协议和域名
var baseUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
.Replace("[PICTURE1]", $"{baseUrl}/assets/icon-positive-vote-1.png")

方案2:将图片内嵌为邮件附件(无外部依赖)

如果图片无法通过公网访问,或者不想依赖外部链接,可以把图片作为内嵌附件加入邮件,通过CID(Content-ID)引用:

  1. 读取wwwroot中的图片文件,添加为内嵌附件:
// 注入IWebHostEnvironment获取wwwroot路径
var imageFullPath = Path.Combine(_webHostEnvironment.WebRootPath, "assets/icon-positive-vote-1.png");
var imageStream = new FileStream(imageFullPath, FileMode.Open);

// 以System.Net.Mail为例,创建内嵌附件
var inlineAttachment = new Attachment(imageStream, "icon-positive-vote-1.png", "image/png");
inlineAttachment.ContentId = "picture1_cid"; // 自定义唯一CID值
inlineAttachment.ContentDisposition.Inline = true; // 设置为内嵌显示

// 将附件添加到邮件对象
mailMessage.Attachments.Add(inlineAttachment);
  1. 修改模板替换逻辑,使用CID引用:
.Replace("[PICTURE1]", "cid:picture1_cid")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:52:38