邮件Html踩坑

2020.03.10

从昨天中午开始开发邮件模板,到今天下午两点,终于搞定了主流邮箱的样式兼容问题。中间花了13小时,因为没有经验,所以踩了很多坑,总算趟出了一条路。

由于各大邮件系统所支持的HTML模板对css兼容性好坏不一,导致我开发时用的一些css样式属性完全不生效。经过不断的尝试,终于开发出了一套能够兼容主流邮箱的邮件模板。下面记录一下遇到的坑点,以及解决办法。

布局

table 布局,只能用table布局!所有和布局相关的属性基本都失效了,margin、padding、position在各个邮箱里支持的很不均衡,所以基本不能用了。所以对于垂直居中对齐,水平居中对齐,用table可以实现。虽然实现起来很麻烦,经常需要td标签里面再嵌套table,并且每个table标签最好设置属性border="0" cellpadding="0" cellspacing="0" width="100%" ,以保证样式的稳定,尤其是width属性,对于table和td最好都明确设置具体的值,否则会出现某些邮件里是100%,某些邮件里就是自动撑宽的样式。

对于想要padding效果的样式,可以采用嵌套table来实现,借助 td 标签的 align=“center” valign=“middle” 属性来保证居中:

<table border="0" cellpadding="0" cellspacing="0" width="100%" >
    <tbody>
      <tr>
        <td style="width: 100%;" align="center">
          <table width="80%">
            <!-- 这个table就居中了,并且与父容器有20%的间距 -->
          </table>
        </td>
      </tr>
    </tbody>
  </table>

也可以用border来实现:

<table border="0" cellpadding="0" cellspacing="0" width="100%" >
    <tbody>
      <tr>
        <td style="width: 100%; border: 10px solid #FFF" align="center">
          <!-- 这个容器就居中了,并且与父容器有10px的间距 -->
        </td>
      </tr>
    </tbody>
  </table>

对于想要类似margin的间距,就用空的tr标签,指定height即可。

对于table的使用,顺便说一下,只有td标签能嵌套其他元素,td里面可以写div、a标签等等,也可以嵌套table标签,这点要注意下。这次开发,让我对table稍微熟悉了。以前见到table总是发慌,现在不怕它了。

CSS3属性不要用

对于想要圆角的样式,border-radius属性不能用,很多邮箱都支持,但是也有不支持的。你以为你用了,它不支持就只是圆角不生效,展示成直角么?不支持的邮件里,对于border-radius的处理很尴尬,会展示类似于锯齿样式,很难看。

对于vw单位也不要用了,中国的一些邮箱支持的还可以,俄罗斯的有些邮箱不支持。

总之,css3的样式属性基本不要用了,邮件模板通用的开发守则就是table布局。

对于邮件模板HTML开发总结就这么多,后面再踩坑会继续补充,希望能帮到即将踩坑的你。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 说到这个,还要从我第一次接手“邮件模版”需求写起 PM:写个邮件模版,数据让后端渲染给你~ Me: 看到设计稿,觉...
    Maple乐乐阅读 1,315评论 2 1
  • 浏览器与服务器的基本概念 浏览器(安装在电脑里面的一个软件) 作用: ①将网页内容渲染呈现给用户查看。 ②让用户通...
    云还灬阅读 1,147评论 0 0
  • 概述 在网易云课堂学习李南江老师的《从零玩转HTML5前端+跨平台开发》时,所整理的笔记。笔记内容为根据个人需求所...
    墨荀阅读 2,366评论 0 7
  • 一、思路 使用脚本发送邮件的思路,其实和客户端发送邮件一样,过程如下: 登录 -—> 邮件 -—> 发送 思维脑图...
    惑也阅读 1,956评论 0 2
  • 今天百度学习了如何在python中使用SMTP发送邮件,包括带HTML格式和附件。基本套路就是定义一个MIMETe...
    cz_布衣阅读 843评论 0 0