HTML邮件兼容性极差:Outlook用Word引擎不支持现代CSS,Gmail禁用style标签,必须内联样式、用table布局、设图片宽高、写全字体栈并避免无效属性 直白点说,会。而且这个影响不是模棱两可的“可能出错”,而是近乎必然的“大概率翻车”。只要你把现代网页开发的那套习惯带进邮件,几乎铁

直白点说,会。而且这个影响不是模棱两可的“可能出错”,而是近乎必然的“大概率翻车”。只要你把现代网页开发的那套习惯带进邮件,几乎铁定会在Outlook、Gmail或Apple Mail里看到各种意料之外的显示异常。
长期稳定更新的攒劲资源: >>>点此立即查看<<<
这事儿得从根儿上讲。自2007版起,Outlook就启用了Microsoft Word的HTML解析器来渲染邮件正文。这可不是什么临时补丁,而是微软基于安全考量做出的长期设计选择。于是问题来了:Word的渲染引擎对现代CSS的支持度几乎为零。像flexbox、grid、position、nth-child()这些特性,它一概不认识。甚至连margin: 0 auto这种简单的居中声明都可能无效。它只认那些老式的HTML标签和属性,比如table、cellpadding、align和valign。
结果是啥?你精心设计的 在邮件开发里,很多CSS属性是“雷区”,用了基本等于白用,发出去就面目全非。下面这些属性在主流邮件客户端中的支持度低得可怜,或者说,完全不可靠: 想要系统避坑?不妨系统看看前端开发的深度笔记。 那么,到底哪些属性是安全的呢?经验表明,可以放心使用的范围很窄,主要集中在: 很多人对“内联样式”有误解,以为就是把 举个具体的例子。在网页里,一个居中按钮可能这样写: 到了邮件里,就必须彻底展开,写成这样: 邮件里常见的图片变扁、文字堆叠、底部留白诡异消失等问题,根源往往不是素材本身,而是容器失控。深入看,无外乎这几个原因: 解决之道其实很朴素: 侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述style="display: flex"这样的属性会被整个剥离掉;至于放在标签里的样式,在Gmail里更是根本不会生效。
style属性,别指望外链CSS或块。table嵌套是唯一可靠的布局基石,tr和td就是你的主要容器。colspan和rowspan在Yahoo Mail这类客户端里表现不稳,稳妥起见,用嵌套table来替代。width和height属性,光靠CSS里的width:100px是远远不够的。哪些CSS属性在邮件里基本等于没写
position: relative/absolute/fixed — 在Outlook里直接被忽略,元素会回流到文档的原始位置。float: left/right — Gmail和Outlook都不支持,想对齐?老老实实用text-align。margin-top/margin-bottom — Outlook 2007到2019版本对margin的支持极差,优先使用padding来制造间距。background-image — Outlook对此say no。想设置背景,得用bgcolor属性,或者配合table的background属性来曲线救国。@media查询 — 多数客户端不识别,想做响应式?得靠display: none配合Outlook专属的条件注释。color、font-family、font-size、line-height、text-align、vertical-align、padding、width、height,以及格式完整的border(例如border: 1px solid #ccc)。内联样式不是“加个style就行”,而是要彻底重写流程
挪成 就万事大吉。实际上,这背后的限制要严苛得多:
.btn这种写法在邮件世界毫无意义。像Roadie这类工具的核心工作,就是把所有样式转换成style属性,然后删掉所有class。:hover、:active这些交互状态,在邮件里根本不存在。font-family会自动传给子元素。每个文本元素,哪怕是个span,最好都单独设置一遍style。td的padding远比margin可靠,但即使padding也并非在所有客户端都表现一致,所以固定值加多端测试是必须的。
点击
图片缩放和文本错位的根本原因
width没设height,Outlook按比例缩放失败,就会进行强制拉伸。div或p里,而这些标签在Outlook中可能带有不可预测的默认边距,margin被过滤后,只留下不匹配的padding,导致布局错位。vertical-align: middle,但父td没有指定height或line-height,对齐的基准点就丢失了。font-family: "Helvetica Neue",在Windows Outlook里一旦回退失败,字号和字距就可能突然变样。
width和height两个HTML属性。td里,用padding来控制间距。font-family: Helvetica, Arial, sans-serif;。td都加上style="vertical-align: top",防止默认的居中行为干扰布局。