html邮件兼容性完全由outlook、gmail、apple mail三方引擎决定:必须用table布局、内联样式、width/height属性、font标签、https绝对图片路径,并采用hybrid隐藏方案,禁用css3、媒体查询与background-image。

HTML邮件对兼容问题不是“有要求”,而是“完全由兼容性定义”——你写的每行代码,都得先过 Outlook、Gmail、Apple Mail 这三关,否则发出去就是乱码、错位、图片消失或空白页。
为什么
<font face="Arial, sans-serif" size="2"> 双兜底,<code>font-family 在 Outlook 2007–2019 中经常失效
background-image 全面禁用 —— Outlook 不渲染,Gmail 会 block,改用 bgcolor="#f5f5f5" 或拼接 <img>
Gmail App 里 display:none 为啥不生效
Gmail(尤其是 iOS/Android App)会主动剥离 style 属性中的 display、visibility、opacity 声明,它只保留极简子集。你写的 style="display: none;" 发过去就没了。
实操建议:
- 需要隐藏内容(比如“仅桌面显示”区块),必须用 hybrid 写法:
<div style="display: none; max-height: 0; overflow: hidden; mso-hide: all;"> <li> <code>mso-hide: all是 Outlook 专用,max-height: 0+overflow: hidden是 Gmail App 保底,两者缺一不可 - 别信媒体查询 ——
@media (max-device-width: 480px)在 Gmail App 和 Outlook for Windows 中基本无效 - 测试时必须真机打开 Gmail App,Web 版 Gmail 渲染结果毫无参考价值
- 所有
<img>必须带src(HTTPS 绝对地址)、alt、width、height四个属性 - 禁止
style="width: 100%;"—— Outlook 会忽略,导致图片拉伸;用width="200" height="100"属性控制 - 加
border="0" style="display: block;"消除图片下方默认间隙 - 图片服务器必须支持 CORS?不需要 —— 邮件客户端不校验 CORS,但必须 HTTPS 可直连、响应头不含
X-Frame-Options: deny
图片不显示,90% 是路径和协议问题
邮件客户端不会走本地缓存,也不执行 JS,一切依赖绝对 URL。相对路径、http://、本地 file:// 全部被拦截 —— Gmail 直接 block,Outlook 显示红叉,Apple Mail 留白。
实操建议:
真正卡住人的从来不是“怎么写”,而是“哪一行在哪个客户端里会崩”。同一份 HTML,在 Outlook for Windows 里结构完好,在 Gmail App 里却多出两行空白,在 iOS Mail 里字体突然变小 —— 这些都不是 bug,是常态。测试不能省,也不能只测 Web 版;View original 看源码比预览更重要;<table> 和 <code><font></font> 不是过时,是目前唯一能跨客户端落地的语法。











