HTML 邮件内容虽然也是 HTML,但是和我们在网页上使用的 HTML 不同,因为安全原因,各大邮箱服务商及邮件客户端都会对邮件内容进行一定程度上的处理,不会按照你写的原本 HTML 展示。

bVLlGM?w=1300&h=450

在桌面和移动端渲染电子邮件大约有上百万种不同的组合方式。

尤其是鼎鼎大名的 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 这些属性:

body 外的内容几乎没用

我们知道完整的 HTML 包括 DOCTYPE 声明、html 和 head 标签及其内容、body 标签,对于在一个 iframe 中显示邮件内容的邮箱还好,会保留上述结构,但是有些邮件(如 Gmail)都是在 div 中直接包含,这就对安全要求极为苛刻。安全原因邮箱会默认把上述结构做删除处理,所以写了几乎没有作用,在可能的情况下尽量把内容写到 body 内,甚至建议从 table 开写,直接放弃 DOCTYPE / html / head / body 标签。

使用内联样式

与普通 HTML 页面开发一样,HTML 邮件依旧离不开 CSS,HTML 邮件并不支持外部的 style 文件,上面讲到 head 标签极有可能被删除,所以不要试图在 head 标签内写 style 标签。

那么在 body 内写 style 标签是不是就保险了呢?并不是!典型的就是 Gmail 邮箱,会把 HTML 邮件内所有 style 标签删除,这就意味着只有內联 style 属性内的 CSS 是唯一可靠的样式信息。

能用属性就不要用样式

并不是使用 style 属性就保险了,很多邮箱会对特定标签的属性做强制改造。

比如在 OutLook 中,图片使用以下方式来设置宽高是无效的:

*.png

正确的设置方法:

*.png

所以在有属性能够实现样式效果的时候尽量使用属性,常见的可用属性有:

width

height

bgcolor

align

valign

……

所有样式单独指定

在写页面的时候利用 CSS 的继承会为我们带来很多便利,但是到了 HTML 邮件,一切都要 say NO!

其实继承规则依旧有效,但是大部分邮件都无法完整继承样式,并且邮箱的默认样式也会对邮件产生一些头疼的干扰。比如 font-family,OutLook 中若想改变字体,至少每个 table 中都要指定 font-family,而在 QQ 邮箱甚至必须每个 td 都设置 font-family 才能全部生效。

因此每个标签单独指定样式是必须的,尽可能不要依赖继承,即使它十分地繁琐。

脚本?想都不要想!

如题 ( ̄▽ ̄)"

图片相关

背景图片

style 内容里面 background 可以设置 color,但是 image 会被过滤,就是说不能通过 CSS 来设置背景图片了。但是有一个很有意思的元素属性,也叫 background,里面可以定义一个图片路径,但是功能有限,比如无法定位背景图片等。

例如要给一个单元格加一个背景,必须这样写:

当然,不使用背景图片是最好的选择 ╮(╯-╰)╭

指定 width 和 height 属性

因为在有些邮箱里,图片不是默认加载的,往往加载前需要用户的许可。那么高宽的指定可以使邮件在没有图片撑出样子前也能保持良好的大小结构,加上 alt 属性更可以明确告知图片的内容让用户选择是否下载它们。

如果因为项目需要(比如需要适配 Retina 高分屏),width 和 height 属性更是必不可少的,并且由于一些 outlook 版本的奇葩表现,width 和 height 属性一定不要加上单位!一定不要加上单位!一定不要加上单位!重要的事情说三遍。

否则你希望的是这样的:

*.png

bVLlO6?w=479&h=163

而实际上它确是这样的:

*.png

bVLlPO?w=463&h=165

因为加上单位会使一些版本的 OutLook 无法正确识别,导致图片显示使用实际的宽高而非我们设置的。

当然,常规项目中应尽可能保持设置的 width 和 height 的值与实际的宽高一致。

margin 与 padding

Outlook 2007-2013 不支持图片的 margin 与 padding 样式,必要的时候可以尝试 hspace 和 vspace 属性:

*.png

或者为图片本身添加额外的空间(这个实在太LOW了,不推荐)

文字相关

字体

在 HTML 邮件中,font-family 只支持系统字体,不支持自定义字体,也不支持 font 简写,color 尽可能也不要使用简写:

font: 12px / 14px Arial, sans-serif;

color: #999;

需要写成:

line-height: 14px;

font-size: 12px;

font-family: "微软雅黑", Arial, sans-serif;

color: #999999;

对于加粗字体,我们可以使用 b 标签而不是 CSS 的 font-weight,前文说过,HTML 标签和属性能解决的样式决不使用 CSS 样式。

行高

在 OutLook 中会有个默认的行高最小值,特别是当设置 font-family 为微软雅黑时,默认的行高差不多为 Word 中的两倍行距,如果 line-height 设置的值小于默认的行高,无论你设置的是多少,则始终使用默认值,在很多情况下这是不能忍的,好在有个神奇的 mso-line-height-rule,使用行高时添加 mso-line-height-rule:exactly; 就能使行高始终等于我们所设置的值。

这只是微软的 CSS 属性,对其他客户端没影响。并且该属性只在块元素上有效,所以想在 font 和 span 中用就洗洗睡了吧。

使用前:

bVLl2O?w=86&h=108

使用后:

bVLl23?w=79&h=79

不过这种实现方式有点瑕疵,就是会导致大号字体无法垂直居中,大家自行取舍吧 (lll¬ω¬)

参考文献

Word 2007 HTML and CSS Rendering Capabilities in Outlook 2007

What You Should Know About HTML Email

EDM制作要点

Outlook HTML 渲染引擎

html邮箱提示的属性,HTML 邮件兼容问题与解决方案相关推荐

  1. html兼容模式下不显示图片,HTML 邮件兼容问题与解决方案

    HTM年有这只制明个手近天点里要它出水机近天点L 邮件内容虽然也是 HTML,但是和我们在网页上使用的 HTML 不同,因为安全原因,各大邮箱服务商及邮件客户端都会对邮件内容进行一定程度上的处理,不会 ...

  2. 支持html邮件,HTML邮件兼容问题与解决方案

    HTML 邮件内容虽然也是 HTML,但是和我们在网页上使用的 HTML 不同,因为安全原因,各大邮箱服务商及邮件客户端都会对邮件内容进行一定程度上的处理,不会按照你写的原本 HTML 展示. 913 ...

  3. 通过QQ邮箱的SMTP服务器发送QQ邮件至163邮箱提示“发送邮件失败”的解决方案(三种可能性,不妨一试)...

    IDE:Visual Studio 2010[C#] + .NET 4.0框架 引用.NET 4.0框架的System.Net.Mail命名空间开发发送邮件的程序.发送方:QQ邮箱 接收方:163邮箱 ...

  4. css元素与浏览器边框,别具光芒CSS属性、浏览器兼容与网页布局

    别具光芒CSS属性.浏览器兼容与网页布局 语音 编辑 锁定 讨论 上传视频 上传视频 <别具光芒CSS属性.浏览器兼容与网页布局>是2008年人民邮电出版社出版的图书.该书结合大量范例与实 ...

  5. 查看邮箱帐号属性与说明

    邮箱属性 邮箱属性相关设置: 收/发信可分开进行帐号密码验证 提供代理接口,可结合第三方服务(畅邮不提供)登陆Gmail等不能正常访问的邮箱. 一.如何进入 邮件列表:选择目标邮箱,点击属性 邮箱管理 ...

  6. 不能上美国邮箱服务器地址,我的邮箱不能接收国外的邮件,国内的可以接收,请解决!...

    我的邮箱不能接收国外的邮件,国内的可以接收,请解决! 您好: 如果能收国内的,不能收国外的邮件,有可能是该封邮件被判定为垃圾邮件,所以拒收了.这种情况下对方会收到我司服务器发出的拒收原 因,如:用其它 ...

  7. 恢复Foxmail和Outlook邮箱中已删除的邮件

    一.恢复Foxmail邮箱中已删除的邮件 很多朋友习惯使用Foxmail作为邮件收发工具,方便管理,和进行各种操作.而很多时候,用户会不小心将邮件删除.特别是还点击了废纸箱"清空" ...

  8. 2022邮箱如何发送群发邮件?邮件群发平台软件哪个好?一文get群发小技巧

    生活处处有惊喜,软件APP功能处处都有小技巧 相信因为疫情有好多人都和我一样居家办公,这是就对电脑的硬件以及工作中经常使用的一些软件的要求就比较高了,比如邮箱的容量,发信速度等等都可能影响和同事客户的 ...

  9. HTML5 标签、事件句柄属性以及浏览器兼容情况速查手册

    随着主流浏览器对 HTML5 的不断支持和完善,越来越多的开发者开始使用 HTML5 来开发各种功能强大的 Web 应用程序,HTML5 正引领互联网新革命.为了方便大家更好的学习 HTML5,今天这 ...

最新文章

  1. python进阶免费-【Python进阶,一学就会】系列1(文末免费送10本书)
  2. Mybatis工作流程及其原理与解析
  3. 让TP5.0在SWOOLE上飞起来
  4. 什么是注入式攻击(2)
  5. 计算机二级考试模拟表单答题,2016年计算机二级考试《VFP》模拟简答试题
  6. 3款动态网页时间时钟HTML5源码
  7. Web开发小结 - 2
  8. Vista曝致命漏洞 10秒钟可让系统崩溃
  9. [转载]Hadoop 2.X 日志文件和MapReduce的log文件研究心得
  10. 樊昌信 通信原理第七版 第八章思考题
  11. 漫谈云计算网络(二): 云计算网络的应用场景
  12. mysql高频面试题合集
  13. 令牌环算法_一环(令牌)将它们全部统治
  14. linux dns配置srv记录,DNS之SRV记录
  15. 双鱼座男适合学计算机专业,双鱼座男生适合的职业是什么
  16. 低成本血氧仪方案设计
  17. “代理服务器出现问题,或者地址有误”解决方案
  18. 务实java基础之集合总结
  19. JSP-学生管理系统
  20. 使用openfeign调用报错java.io.IOException: too many bytes written,以及调用过程中参数传递为空等问题

热门文章

  1. python列表乘一个数字_python的列表乘以数字
  2. 怎么找回回收站清空的文件?终于解决了
  3. 当《鱿鱼游戏》强势来袭:“一、二、三,木头人,思密达。”你还在恐惧嘛?
  4. pd4ml技术html导出pdf,支持中文,兼容Linux
  5. Python:Kendall tau相关系数的计算
  6. BIM模型文件下载——五星级酒店revit模型
  7. 2021年我国航天发射次数有望首次突破40次反超美国
  8. 捷码智慧农业模板上新
  9. Slog71_选取、上传和显示本地图片GET !(微信小程序之云开发-全栈时代3)
  10. 钉钉如何发起直播?钉钉电脑版直播发起方法简述