通知邮件里的 logo 在网页端能看,手机邮箱里是个红叉,图片地址写的是服务器内网 IP。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
Content-Type: image/png; name='logo.png' Content-ID: <logo@example.com> <img src='cid:logo@example.com'>
图片用外链而且指向内网地址,外部客户端根本取不到,也没有用 cid 引用随信内嵌的附件。这一点先确认清楚,后面就不用反复试。
碰到「内嵌图片 cid」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。
具体做法是,先把图片切成小图随信内嵌;正文用 cid 引用;或者换成公网可访问的 https 地址。
改完照着核一遍,各客户端里 logo 都能正常显示,不再出现红叉。
