做跨境独立站这两年除了站点本身我还会定期给订阅客户发促销 EDM新品上架、节日折扣、清仓预告基本都靠邮件触达。一直以来我都觉得邮件做得挺顺直到上一波大促发出去之后客服那边陆续收到几封回复内容出奇一致——“邮件里的产品图都是空白的只看到一个个小框能不能直接把图发我”我一开始以为是客户那边的问题结果换了几个邮箱、用手机再看问题复现了有的客户端弹着是否显示图片有的是一串占位框还有几封直接进了垃圾箱。折腾了大半天把一封邮件从外到内拆开查了一遍才算把EDM 图片为什么会消失这件事弄明白。这篇不推任何东西就把背后的机制和我的排查过程完整记录下来。一、看不到图其实是三类完全不同的问题动手改之前我先把客户反馈的现象分了类根因差得很远混在一起只会越改越乱邮箱默认不加载远程图片正文里的img srchttps://...没有自动请求需要收件人手动点显示图片最常见。图源本身出了问题即使点了显示图片也加载不出——链接失效、http 被拦、Referer 防盗链、或海外太慢超时。整封邮件被判为垃圾邮件客户没在收件箱看到邮件这是发信域名信誉和认证的问题。对号入座后排查方向就清楚了我这次三种都遇到了一点。二、邮箱为什么默认不加载远程图片这是我以前一直没深究的点。我们写网页时img标签里的图浏览器会自动请求但邮件客户端偏偏默认不加载原因主要有两个。第一是反追踪和隐私。邮件里除了肉眼可见的产品图往往还藏着一张 1×1 像素的透明图俗称 tracking pixel。只要客户端自动加载了这张远程图发信服务器就能从这次请求里拿到收件人的 IP、打开时间、设备类型、大致地理位置从而判断这封邮件有没有被打开、什么时候打开、看了几次。这本质上是一种埋点。出于隐私主流客户端默认切断它。第二是安全。远程内容可以被用来做设备指纹识别也可能配合重定向引导到恶意地址。也正因为如此各家客户端的处理方式还不一样Gmail通过自家图片代理googleusercontent.com中转抓取并缓存隐藏收件人信息对可信发件人可能自动加载。Outlook桌面版历来默认屏蔽远程图片顶部给一条单击此处下载图片的提示。Apple Mail近年加入了隐私保护会代理/缓存远程内容、隐藏 IP让已读追踪失效。国内 QQ 邮箱、163 等网页端和 App 也普遍有显示图片开关。所以客户看到空白框很多时候不是图坏了而是客户端出于隐私默认没去请求。我不能指望每个客户都主动点显示图片因此邮件必须在图片不加载时依然能读懂。三、一封邮件里图片到底可以怎么放我把邮件里放图的方式捋成三种它们在是否默认显示上差别很大。方式一远程 https 图片。正文直接引用外部图源的 URL。优点是邮件本身不占体积、图可以随时更新缺点就是上面说的默认可能不加载且依赖图源稳定、不挑 Referer。方式二CID 内嵌multipart/related Content-ID。把图片作为邮件的一部分随正文一起发正文用cid:logo引用。图随邮件到达多数客户端直接显示、不依赖外部请求缺点是邮件体积变大、附件多了容易被垃圾过滤器盯上个别客户端支持也不一致。方式三普通附件。图不内嵌、只作为附件需要客户手动点开体验最差一般只用于发送报价单这类文档。我现在的做法是混合策略 强制 alt 文本真正承载信息的图品牌 logo、核心产品主图、关键促销信息尽量用 CID 内嵌保证默认可见纯装饰性、可看可不看的图走远程 https控制邮件体积每一张图都写清楚alt替代文本这样即便所有图都不加载客户看到的也是新品三件套主图满减活动海报这样的文字描述而不是一个个干巴巴的空框最关键的促销信息折扣力度、截止时间、行动按钮绝不只放在图片里正文一定有对应的纯文本否则图一被屏蔽转化点就彻底丢了。四、我是怎么一步步定位问题的排查时我固定走这么几步基本能覆盖绝大多数情况。1. 多客户端、多端复测。分别在 Gmail 网页端、Outlook、Apple Mail、手机自带邮件 App 里各看一遍先确认问题出在默认不加载还是加载了也失败。如果点了显示图片后图能出来就是第二类之前的隐私策略问题点了还是裂才是图源问题。2. 查看邮件原始内容。Gmail 里显示原始邮件能看到 MIME 结构是multipart/related还是单纯 HTML、图片是远程 URL 还是带Content-ID的内嵌、有没有 DKIM 签名。我这次就发现一封本该内嵌的 logo 被发信工具写成了远程链接。3. 直接验证图源。把图片 URL 复制到浏览器无痕窗口直接打开再用curl -I看返回头curl-Ihttps://你的图片域名/promo/main.jpg重点看三样返回是不是200、是不是https纯 http 的图在很多客户端会被直接拦、以及图源有没有 Referer 防盗链——邮件客户端和图片代理发起的请求Referer 往往是空的或者千奇百怪如果图源要求特定来源才给图邮件里就会大面积裂开。这和我之前整理过的图片为什么会裂、防盗链是怎么回事是同一类问题。4. 检查发信认证和域名信誉。用 mail-tester 打分确认 SPF、DKIM、DMARC 配置正确再看发信域名和图源域名有没有上 RBL 黑名单图源域名若被标记图片代理会拒绝抓取所以 EDM 图源最好用干净、固定的域名。五、图源这一层我会怎么选经过这次排查我对 EDM 图源的要求变得很明确必须走 https、链接长期稳定、不挑 Referer允许空来源请求、域名固定且信誉良好、改图时能同名覆盖而链接不变、面向海外客户时加载要快最好还能绑定自己的品牌域名。海外图片从请求到渲染的整条链路我在这篇独立站图片加载记录里展开过。图源具体放哪儿没有标准答案自己开对象存储再套一层 CDN、把图片放在干净的自有域名下是完全可行的路线。我个人图省事把 EDM 用的图统一放在图床小镇图片直开不挑 Referer、全程 https、同名覆盖后链接不变、海外客户加载比较稳定需要品牌一致性时也能绑自己的域名。这只是我用顺手的个人选择并非唯一答案自建一套同样可行。六、发送前的自检清单最后把我每次发 EDM 前的检查项列在这里照着走能避开大部分图片消失的坑关键促销信息是否有纯文本版本不依赖图片也能读懂每张图是否都写了准确的alt核心图是否考虑 CID 内嵌装饰图才走远程远程图是否全部 https且用无痕窗口、curl -I验证过可直开、不挑 RefererSPF / DKIM / DMARC 是否齐全发信域名和图源域名信誉是否正常是否在 Gmail、Outlook、Apple Mail、手机端都实测过一遍。说到底EDM 图片显示不出来绝大多数情况不是图没做好而是邮件客户端的隐私策略、邮件的 MIME 结构、图源的稳定性、发信域名信誉这四层里某一层出了问题。把这四层逐一确认图片该显示的自然会显示即便不显示客户也能靠文字读懂你的邮件。官网https://imgbed.cn