使用AWS SES发送MJML生成的HTML邮件后CSS样式失效问题咨询
AWS SES发送MJML导出HTML邮件样式失效的常见原因
- SES接口传参错误:调用
ses.sendEmail时若误将HTML内容传入Message.Body.Text.Data字段,SES会将内容按纯文本处理,直接忽略所有HTML标签和样式。请优先核对传参结构,确认HTML内容传入的是Message.Body.Html.Data字段。 - MJML导出配置异常:若导出时未开启强制行内样式配置,MJML生成的HTML仍会有大量依赖类选择器的样式存放在head的
<style>标签中,这类样式会被绝大多数邮件客户端主动过滤。即使你手动添加行内样式,也要确认所有样式直接绑定在标签的style属性中,没有残留依赖选择器生效的样式。 - HTML内容被自动转义:如果传入SES的HTML内容存在未处理的特殊字符,或是你传入的是经过编码的字符串,SES或下游邮件服务商可能会将
<、>、"等符号转义为实体字符,导致标签和样式属性无法被识别。你可以拉取收件箱中原始邮件的源码,和发送前的HTML源码做对比,确认是否存在转义差异。 - 内容体积过大触发裁剪:部分邮件客户端会对超过100KB的HTML邮件内容做自动裁剪,优先裁剪head部分的样式代码,导致全页样式失效。AWS SES单封邮件的大小限制为10MB,你可以先压缩HTML冗余代码,缩小文件体积后再测试。
- 自定义样式不符合邮件规范:部分特殊CSS属性(如flex布局、CSS动画、相对定位等)本身不被老旧邮件客户端支持,即使写在行内也无法生效。如果你的自定义样式用到了这类属性,需要替换为邮件客户端兼容的写法(如用table布局代替flex)。
内容的提问来源于stack exchange,提问作者Ivan Banha
相关产品推荐
相关产品推荐

