head中的style定义无效
一般写网页,喜欢在head中定义css样式,可惜在此处失效。以网易邮箱PC网页版为例,网易邮箱会主动截取之间的代码作为邮件内容,如果在head中定义样式,将不被加载;QQ邮箱PC网页版则会全部加载;outlook2003表现正常,但2007同样不会解析。
布局使用table
DIV除了块级的表现正常,其他则出现了异常,如float/position/width/margin:0 auto 等等。所以先使用table作为最大的父级,需要居中,可以是设定align=”center”。
使用内联样式
CSS中子级会继承父级的样式,但outlook中表现奇怪,因此保险起见,为最小的子级定义内联样式。如
警告。line-height无法实现垂直居中
设计的过程中,我参考了京东商城发送的电子邮件,表头使用的height+line-height来实现垂直居中,但outlook7中表现为底部对齐,可能原因是outlook2007的解析原理不一致①,我们可以使用padding来撑高。在文字段落中line-height仍然是正常的。
各版本解析方式不一致
参考文章①和②已列出来,简单而言就是outlook2007使用的是word引擎(HTML e-mails are now displayed by a word engine),想区别的,2003版本则是使用的是浏览器引擎,2012为深究。其他的PC网页版则肯定使用的浏览器引擎,微信也是使用的浏览器解析引擎。
outlook转发会丢失样式
HTML邮件在outlook中表现正常,但转发时会调用word编辑器,则会破坏了原来的样式,最明显的表现就是会在每个table结束时加个换行。目前还没找到具体的解决办法,如果有网易邮箱的“原件转发”功能,是否能解决呢?
尽可能不要使用图片
由于outlook的安全设置,默认都是不显示图片的。如果使用到了,需指定宽度和高度,避免图片不显示是预留位置撑破页面。
统计邮件到达及阅读情况
1. 阅后回复,这个需要阅读者点击确认回复;
2. 在邮件底部隐藏一个图片,图片地址则是包含统计参数的URL,如京东的:
当然上一条已经决定了该方法存在失效的可能。
3. 对邮件内的所有链接加入跳转,只要访问,就能通过跳转来记录,例如sendcloud的做法。缺点是,如果不访问就无法记录;特别需要注意部分邮件服务器(如QQ邮箱)会主动扫描链接(防毒),导致误标记;
4. 尝试撤销邮件,如果已经阅读,会提示撤销失败;缺点是发件人和收件人必须是同一邮件服务器;
将发件人加入通讯录
由于邮件标题一样,如果大量发送邮件,经常会被列入垃圾邮件,避免这种情况,可以考虑动态生成标题,并要求收件人将发件人加入通讯录。这里不得不吐槽godaddy,正常通知邮件和广告邮件的发件箱相同,导致正常的通知邮件也被列入广告邮件中。
将附件中图片插入的邮件内容中
请阅读参考文章③