设计把模板头图从 PNG 换成 90KB 的 WebP,体积小了一半,Outlook 桌面版里直接显示红叉,手机端却正常。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

cwebp -q 80 hero.png -o hero.webp   # 仅网页使用
convert hero.png -resize 600x -quality 82 hero.jpg
grep -rn '\.webp' templates/mail/

Outlook 用的是 Word 的图片解码器,不支持 WebP,遇到不认识的格式就显示占位图。客户端对图片格式的支持取决于系统组件而不是浏览器版本。这一点先确认清楚,后面就不用反复试。

碰到「邮件图片格式兼容」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

具体做法是,邮件图片统一用 JPG 或 PNG,WebP 只在网页端用;确实要减小体积就压 JPG 质量到 80 并限制宽度;在 Outlook 桌面版和 Foxmail 各看一次,确认没有红叉。

改完照着核一遍,Outlook 里头图正常显示,邮件模板目录里不再出现 .webp 引用。

作者 9823189