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

Gmail中图片无法显示:img src被修改问题及解决方法求助

Gmail接收邮件后Logo图片无法显示的问题排查与解决

问题描述

我们通过代码生成带公司Logo的邮件,在多数邮件服务商测试正常,但Gmail接收后Logo无法显示。排查发现Gmail会在图片地址前添加https://ci6.googleusercontent.com/proxy/[相关内容],最终img标签的src变为<img src="https://ci6.googleusercontent.com/proxy/etcetcetcetc#https://our.imagehost.com/img/logo.svg"...>,仅显示损坏的图片缩略图。

发送邮件的代码如下:

public void SendEmail(string subject, string from, string to, string body)
{
    var mm = new System.Net.Mail.MailMessage
    {
        From = new System.Net.Mail.MailAddress(from),
        Subject = subject,
        Body = body,
        IsBodyHtml = true
    };

    mm.To.Add(to);

    using (var ret = new System.Net.Mail.SmtpClient())
    {
        ret.Host = SmtpConfig.Host; 
        ret.Port = SmtpConfig.Port;
        ret.Credentials = new NetworkCredential(SmtpConfig.User, SmtpConfig.Password);
        ret.EnableSsl = SmtpConfig.EnableSsl;

        ret.Send(mm);
    };
}

一、Gmail此行为的原因

Gmail对邮件中的外部图片地址做代理转发,核心目的有三点:

  • 隐私保护:防止外部图片通过加载请求追踪用户的邮件打开行为(如记录IP、设备信息);
  • 性能优化:借助Google CDN缓存图片,降低用户加载外部资源的延迟;
  • 安全校验:扫描图片内容,排查恶意代码或不安全资源。

二、图片无法显示的缘由

出现损坏缩略图的核心是代理解析失败,常见场景包括:

  • 图片服务器防盗链拦截:多数图片托管服务会检查请求的Referer或来源IP,Google代理IP不在允许列表内,导致返回403或无效内容;
  • 图片格式/大小不兼容:Gmail代理对复杂SVG特性、超大尺寸图片的解析支持有限;
  • 原地址异常:图片地址存在多次重定向,或HTTPS证书不被信任,导致代理无法正常获取资源。

三、解决办法

1. 将图片嵌入邮件作为附件(最可靠)

把Logo直接嵌入邮件内容,彻底摆脱外部资源依赖。修改代码示例如下:

public void SendEmailWithEmbeddedLogo(string subject, string from, string to, string body, string logoPath)
{
    var mm = new System.Net.Mail.MailMessage
    {
        From = new System.Net.Mail.MailAddress(from),
        Subject = subject,
        IsBodyHtml = true
    };

    // 添加内联图片附件
    var logoAttachment = new Attachment(logoPath);
    logoAttachment.ContentId = "companyLogo"; // 设置唯一标识ID
    logoAttachment.ContentDisposition.Inline = true; // 标记为内联显示
    mm.Attachments.Add(logoAttachment);

    // 替换邮件Body中的图片地址为内嵌标识
    var bodyWithEmbeddedLogo = body.Replace("https://our.imagehost.com/img/logo.svg", "cid:companyLogo");
    mm.Body = bodyWithEmbeddedLogo;

    mm.To.Add(to);

    using (var ret = new System.Net.Mail.SmtpClient())
    {
        ret.Host = SmtpConfig.Host; 
        ret.Port = SmtpConfig.Port;
        ret.Credentials = new NetworkCredential(SmtpConfig.User, SmtpConfig.Password);
        ret.EnableSsl = SmtpConfig.EnableSsl;

        ret.Send(mm);
    };
}

2. 调整图片托管的防盗链策略

若必须使用外部图片,在托管平台设置中:

  • 添加Google代理服务器IP段到允许列表;
  • 关闭Referer校验,允许所有来源访问该图片;
  • 确保图片地址为稳定HTTPS链接,且SSL证书有效无过期。

3. 优化图片格式与大小

将SVG转换为PNG/JPG等通用格式,避免复杂SVG特性;同时压缩图片大小至100KB以内,提升Gmail代理解析的兼容性。

4. 使用Google兼容的托管服务

将图片上传至Google Drive(设置公开访问权限)或Google Photos,这类资源的代理解析成功率更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:56:07