最近需求是要排出多个邮件html用sendgrid发送到相应邮箱中去。
邮件html代码需要兼容国外比较常见的邮箱,gmail,outlook等。
经测试这样的邮件html格式排布基本都是支持的:
<!DOCTYPE HTML>
<HTML lang="en">
<head>
<meta charset="UTF-8">
<title>my HTML</title>
<meta name="viewport"
content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
<style>
.page {
color: #3a3a3a;
position: relative;
max-width: 600px;
margin: 0 auto;
padding: 0px;
padding-top: 0px;
font-size: 14px;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen,
Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
}
.page *{
padding: 0;
margin: 0;
box-sizing: border-box;
}
@media screen and (max-width:425px) {
}
</style>
</head>
<body>
<div class="page">
</div>
</body>
</HTML>
其中gmail有很多不支持的css,不支持会直接过滤掉。
1.svg中都不支持,不能友好的显示在邮件中,会把viewbox的内容都过滤掉
2.图片或者icon建议用链接的形式展示。
3.gmail 不支持flex,display: flex支持,其他都不支持,grid也一样(建议用float)
4.:nth-child()、:after等不支持
5.gmail position不支持
6.gmail对style里面的css质量大小有限制,建议压缩css放入html中
7.邮件中的链接,样式要加!important覆盖样式
8.html中基本都能支持媒体查询,响应式布局
9.邮件html活用margin: auto;来进行上下或左右居中。
10.css多行文本溢出省略不支持,建议程序截取字符串达到目的。(js:str.slice(0,200))
11.不支持css文本和块的阴影
12:outlook不支持背景渐变样式
13,outlook和gmail不支持文字渐变样式
14,outlook 不支持css media 分段式写法(css1+media1+css2+media2)这样的写法后css2的样式会都失效。
15.outlook手机端,图片统一宽度变成100%全宽的图,有些地方建议用背景图做。
16.outlook中,img 标签不要带反斜杠
17.outlook中,a 链接地址要填写正确,不然影响页面错乱,导致图片不显示。
发送邮件pc端和手机端都各种测试,中间遇到了很多的问题,后续有内容再更新
好用的工具,可以肯直观查看哪些html、css是否支持:Can I email… Search