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

ASP.NET Core发邮件Outlook网页版图片不显示 src变为blockedimagesrc

问题根因

网页版Outlook将外链图片src替换为blockedimagesrc是其内置安全拦截策略触发的表现,和现有发信代码的基础发送逻辑无关:桌面端Outlook、全端Gmail都能正常加载图片,已经证明邮件HTML结构、SMTP发信链路本身是通畅的,拦截仅发生在Outlook网页版的内容安全校验环节。
Outlook网页版的图片拦截规则和桌面端、Gmail不通用:桌面端默认信任本地客户端配置的可信发件人,Gmail对图片走自有代理缓存机制,不会直接替换src属性,因此才会出现仅网页版Outlook加载失败的现象。
常见触发拦截的原因包括:

  • 图片URL携带动态查询参数,被判定为可疑追踪类资源
  • 发件域名SPF/DKIM/DMARC配置不全,域名信誉不足,Outlook对低信誉发件人默认拦截外链资源
  • 图片资源响应头配置不符合要求,或存在防盗链规则拦截Outlook的请求
修复方案

按优先级从高到低选择:

方案1:内嵌图片作为邮件关联资源(兼容性100%,优先选择)

不要使用公网外链引用logo,直接将logo作为邮件内嵌关联资源(LinkedResource)附加,HTML中通过cid协议引用,这是全邮件客户端兼容性最好的方案,完全规避外链图片拦截规则。
修改后的C#发信代码示例:

public void HandleSendMail(string subject, string body, string to)
{
    var host = _config.GetSection("Email:HOST").Value;
    var port = _config.GetSection("Email:PORT").Value;
    var username = _config.GetSection("Email:Credentials:Username").Value;
    var password = _config.GetSection("Email:Credentials:Password").Value;
    var toEmail = to;

    using var mm = new MailMessage("noreply@xyz.com", toEmail);
    mm.Subject = subject;
    mm.IsBodyHtml = true;
    
    // 配置内嵌logo资源
    var htmlView = AlternateView.CreateAlternateViewFromString(body, null, MediaTypeNames.Text.Html);
    // 提前将logo文件存到服务端本地,直接读取本地文件,无需依赖公网图片服务
    var logoLocalPath = "服务端存储logo的物理路径/whv-logo.png";
    var logoResource = new LinkedResource(logoLocalPath, MediaTypeNames.Image.Png)
    {
        ContentId = "whv-logo", // 该ID对应HTML中img标签的cid引用值
        TransferEncoding = TransferEncoding.Base64
    };
    htmlView.LinkedResources.Add(logoResource);
    mm.AlternateViews.Add(htmlView);

    using var smtp = new SmtpClient
    {
        Host = host,
        Port = int.Parse(port),
        EnableSsl = true,
        Credentials = new NetworkCredential(username, password),
    };

    try
    {
        smtp.Send(mm);
    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception caught in Creating Message(): {0}", ex.ToString());
    }
}

对应修改邮件模板中的img标签:

<img id="logo" style="width:100px; height: 100px;" class="logo" src="cid:whv-logo" alt="whv-logo">

该方案不依赖外部图片服务,所有主流邮件客户端、网页版邮箱都能正常渲染,不会触发图片拦截。

方案2:必须使用公网外链时的调整规则

如果因业务需求不能内嵌图片,需按以下规则逐一调整:

  • 去掉图片URL的动态查询参数:你当前使用的imagekit链接携带?tr=w-200,h-200裁剪参数,这类带参数的动态URL是Outlook网页版的重点拦截对象,提前将图片裁剪为需要的200*200尺寸,使用无任何参数的静态URL引用
  • 检查图片服务响应配置:确保图片返回的Content-Type为标准的image/png,不要返回application/octet-stream这类通用流类型;关闭针对Outlook请求UA的防盗链拦截,配置正确的跨域响应头
  • 补全发件域名的身份校验配置:为发件域名xyz.com配置正确的SPF、DKIM、DMARC解析记录,提升发件域名信誉,Outlook对信誉达标的发件人不会默认拦截外链图片
  • 测试阶段可先将发件邮箱加入测试Outlook账号的安全发件人列表,快速验证是否为域名信誉导致的拦截
补充说明

你在源码中看到的blockedimagesrc是Outlook替换原src属性后自动添加的自定义属性,不是你代码写入的内容,只要拦截规则未触发,原src属性会被正常保留,不需要额外处理该属性。

内容的提问来源于stack exchange,提问作者hanushi-thana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 04:15:55