HTML 邮件内容虽然也是 HTML,但是和我们在网页上使用的 HTML 不同,因为安全原因,各大邮箱服务商及邮件客户端都会对邮件内容进行一定程度上的处理,不会按照你写的原本 HTML 展示。
在桌面和移动端渲染电子邮件大约有上百万种不同的组合方式。
尤其是鼎鼎大名的 OutLook,从 OutLook2007 开始便使用 Word HTML 引擎进行渲染,为了它的安全性从而使得整个邮件倒退回了 2000 年前,为了邮件的兼容性你不得不使用很多废弃的标签、属性,并且这一状况将会维持无数个
年头,因为虽然万事终有尽头,但 OutLook 始终存在。
“我们将继续使用 Word 创建电子邮件信息,因为我们认为它是制作电子邮件最好的。”——Outlook 团队如是说。
因为微软一向地特立独行,使得 OutLook 成为了最难啃的骨头。因为 OutLook 支持的标签和属性少得可怜,所以只要兼容了 OutLook,其他邮箱客户端基本都不会有什么问题。如果你开始开发 HTML 邮件并打算为其在各个邮箱里的兼容性努力,下面的建议将非常有用。
基本规则
布局使用 table
这几乎是 HTML 邮件与普通 HTML 页面最大的区别,因为各个邮箱对 div + css 这一套布局的解析问题很大(如 float / position 等 CSS 都会被过滤,甚至 margin: 0 auto; 都不起作用),基本各大邮箱都会解析混乱,所以老式的 table 布局是上乘之选。这就意味着 HTML 邮件中几乎只有这几个元素——table / tr / td / span / img / a,尽量避免使用 div / p 或是其他标签。
而且并不是所有邮箱都支持 colspan / rowspan 属性,所以所有布局都需要使用 table 嵌套解决。
使用表格布局导致的最直接的问题就是会产生多余的空白像素,所以要养成习惯给每个 table 都加上边框 border,单元格内边距 cellpadding,单元格间距 cellspacing,边框合并属性 border-collapse 这些属性:
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;"