emailmd 是一个将 Markdown 渲染为“电子邮件安全”HTML 的工具,目标用户是希望用 Markdown 编写邮件、避免手写复杂 HTML 的人员。它生成的响应式 HTML 兼容 Gmail、Outlook、Apple Mail、Yahoo 及其他客户端。
主要能力
- 将 Markdown 转换为适配邮件的 HTML。
- 内置命令行界面,运行 emailmd --help 可查看全部选项。
- 提供 @emailmd/react,包含实时预览 Hook useEmailmd、<EmailPreview /> 预览 iframe 组件,以及可嵌入自有应用的 <EmailmdBuilder /> 构建器组件。
- 提供 MCP 服务器,向 AI 助手暴露三个工具:render(Markdown 转邮件安全 HTML)、lint(在不渲染的情况下标记送达率问题)、read_docs(查询 emailmd 语法);已发布至官方 MCP 注册表,标识为 dev.emailmd/emailmd。
- 支持将图表与数据组件写成普通 Markdown 列表,包括条形图、进度条、迷你折线图、KPI 磁贴、步骤跟踪器、星级评分等。这些内容由表格单元格和文本字形绘制,而非图片或 SVG,因此在客户端阻止远程图片时仍可显示,并会在纯文本部分自行重绘,而不会退化为数字列表。
- 文档提供完整语法参考、主题设置、frontmatter、指令与 API 说明。
- 提供现成模板,可复制并自定义。
- 提供浏览器内的实时编辑器,用于编写和预览邮件。
使用方式
- 通过 render() 将 Markdown 渲染为邮件 HTML。注意 v0.3.0 迁移:render() 现为异步,调用需从 render(md) 改为 await render(md),并要求 Node 20+(基于 MJML 5)。
- 命令行运行 emailmd --help 查看选项。
- 在 React 项目中可使用 useEmailmd 实现实时预览,使用 <EmailPreview /> 嵌入预览 iframe,使用 <EmailmdBuilder /> 将完整构建器作为组件接入自己的应用。
- AI 助手可通过 MCP 服务器(dev.emailmd/emailmd)调用 render、lint、read_docs。
- 如不使用工具调用,可将完整文档提供给 AI 工具,因为 emailmd 就是 Markdown,AI 擅长编写模板。
适用场景
适合需要以 Markdown 撰写邮件、并面向多种邮件客户端输出稳定 HTML 的开发者与内容作者,也适合在自有 React 应用中嵌入邮件编辑与预览能力,或通过 AI 助手辅助渲染、检查与预览邮件。
限制与说明
emailmd 处于活跃开发中,在 1.0 之前 API 可能在小版本间变化,破坏性变更会在变更日志中说明;semver 契约覆盖范围见 Stability & Versioning。底层使用 MJML 构建。由 Anypost 赞助。欢迎通过 issue 或 pull request 参与贡献。