html邮件模板必须用xhtml 1.0 transitional doctype、table布局、内联样式,禁用html5标签、外部css、flexbox、grid和媒体查询,600px宽度最安全,所有样式须写在每个标签的style属性中。

密码重置邮件本身不是 HTML 实现的“功能”,而是服务端生成、通过邮件服务器发送的 HTML 格式邮件正文;前端 HTML 模板只负责渲染视觉,不处理验证逻辑、令牌生成或数据库操作——这点必须先划清边界,否则容易在前端堆一堆无效代码。
为什么直接写 <form></form> 在邮件里完全没用
所有主流邮箱客户端(Gmail、Outlook、Apple Mail)都禁用 JavaScript,且对 <form></form>、<input>、<button></button> 等交互元素的支持极差甚至直接忽略。用户点“重置密码”按钮,实际触发的是一个带有效期令牌的 <a href="https://yoursite.com/reset?token=abc123"></a> 链接,而不是提交表单。
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 邮件中只保留纯
<a></a>链接,链接必须含完整协议(https://)、域名、路径和 token 查询参数 - 避免使用相对路径、锚点(
#)或 JS 伪协议(javascript:void(0)) - Gmail 会自动将纯文本 URL 转为可点击链接,但样式不可控;用
<a></a>才能保证品牌色和字体统一
table 布局仍是邮件 HTML 的事实标准
CSS Flex/Grid 在 Outlook(尤其是 Windows 版)中基本不支持,<div> 布局极易错位或塌陷。目前最稳妥的方案仍是嵌套 <code><table> + 内联 <code>style,并手动设置 cellpadding、cellspacing 和 width。
- 所有关键样式必须内联,外部 CSS 或
<style></style>标签会被多数客户端剥离 - 字体优先用系统安全字体栈:
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - 宽度统一用固定像素(如
width="600"),避免百分比在 Outlook 中计算异常 - 图片务必加
alt属性和height/width,防止 Gmail 默认隐藏图片时布局跳动
token 链接必须带时效与唯一性校验,HTML 模板里只负责展示
邮件模板里出现的 https://yoursite.com/reset?token=... 链接,其背后的 token 必须由后端生成(如用 crypto.randomBytes(32).toString('hex')),存入数据库并绑定用户 ID 和过期时间(通常 15–60 分钟)。HTML 模板本身不参与生成、不缓存、不拼接 URL——它只是把服务端传来的完整链接原样渲染出来。
- 服务端渲染模板时,应传入已签名/加密的完整重置 URL,而非只传 token 字符串再让模板拼接(防 URL 编码错误和 XSS)
- 链接需做 URL encode,尤其当 token 含特殊字符(如
+、/)时,否则 Outlook 可能截断 - 邮件发完即标记该 token 为“已发送”,防止重复点击或暴力枚举
真正容易被忽略的是:邮件发送成功 ≠ 用户收到。要监控 SMTP 返回状态码(如 550 mailbox unavailable)、加入退订链接(合规要求)、并在用户点击链接后立即作废 token——这些都不在 HTML 模板里,但缺一不可。










