邮件模板必须用内联css和table布局,禁用现代css;字体用安全栈;图片需设宽高和alt;按钮用带背景的table实现;发送前须https图片、无bom头、真实smtp发送。

直接用纯 HTML + 内联 CSS 做欢迎邮件模板,不是写网页,而是写「能发到 Gmail、Outlook、Apple Mail 里还能正常显示」的邮件——这俩根本不是一回事。绝大多数前端习惯的 CSS(比如 flex、grid、class 外链或 <style></style> 块)在邮件客户端里会被无视甚至破坏布局。
为什么不能用现代 CSS 写邮件模板
邮件客户端渲染引擎极度保守:Outlook Desktop 用 Word 渲染,iOS Mail 不支持 @media 查询中的大部分属性,Gmail 会剥离 <style></style> 标签和几乎所有伪类。你写的 margin: 0 auto 在 Outlook 里可能完全不居中,display: inline-block 在某些安卓邮件 App 里直接塌陷。
实操建议:
- 所有样式必须写成
style="..."内联形式,且只用表格(<table>)做布局,别碰 <code><div> 布局 <li>字体优先用安全字体栈:<code>font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;避免用system-ui或自定义 web font - 图片必须带
alt属性,并设width和height(防止 Outlook 拉伸变形) - 禁用
float、position、z-index、:hover等几乎全部交互/定位相关 CSS
怎么用 table 实现居中卡片式欢迎布局
所谓“卡片”,在邮件里就是一层套一层的 <table>:外层定宽居中,中间加 padding,内容区再套一层 table 控制文字对齐。不要幻想用 <code>max-width 或 box-sizing。
示例结构片段:
|
注意:border-radius 在 Outlook 中无效,但多数现代客户端(Gmail Web、iOS Mail、Apple Mail)支持;如需兼容 Outlook,改用 bgcolor + 内边距模拟圆角感。
链接、按钮、响应式怎么处理
邮件里的「按钮」本质是带背景色的 <table> 或 <code><td>,不是 <code><button></button>。响应式只能靠媒体查询 + min-width,但仅限 Gmail App、iOS Mail 等少数客户端生效;Outlook 和旧版 Android Mail 完全不认。
实操要点:
- 按钮写法:用
<table> 包住 <code><td>,设置 <code>background-color、padding、border-radius,内部文字用<center></center>或align="center" - 所有链接必须带
target="_blank"(部分客户端默认新窗口打开,但显式声明更稳) - 响应式媒体查询只写一次,放在
最上方,且只针对宽度断点(如max-width: 600px),不要嵌套复杂选择器 - 关键 CTA 链接下方务必留白(
padding-bottom: 24px),否则 iOS Mail 可能误判为电话号码自动加链接 - 所有图片 URL 是 HTTPS 协议且可公开访问(Gmail 会拦截 HTTP 图片并留空白)
- HTML 文件里没有 UTF-8 BOM 头(会导致 Outlook 解析失败,首行乱码)
- 发送时使用真实 SMTP(如 SendGrid、Mailgun),而不是本地
mailto:或 Outlook 桌面客户端直发——后者会自动重写 HTML、删style、改编码
测试和发送前必须检查的三件事
写完模板不等于能发——90% 的显示问题出在发送环节。
务必确认:
最省事的验证方式:用 https://putsmail.com 粘贴 HTML 发给自己,看 Gmail / iOS Mail / Outlook 三端实际效果。别信本地预览。











