Zapier 不解析、不渲染、不执行 HTML,仅作纯文本处理;HTML 必须预验证格式、使用内联样式、避免外链,并通过 Code by Zapier 安全注入变量,发送前需按接收方要求编码或转义。

HTML 模板在 Zapier 里根本不能直接运行
Zapier 不解析、不渲染、不执行 HTML,它只把 HTML 当成纯文本字符串处理。你拖一个 Webhook 或 Email 动作,贴进去一段带 <div>、<style> 的 HTML,Zapier 不会帮你“显示网页”,只会原样发出去——能不能渲染,全看接收方(比如邮箱客户端或 API)支不支持。
常见错误现象:
• 发邮件后看到一堆裸露的 <p> 标签,没样式也没布局
• Webhook 返回 400 Bad Request,因为目标 API 把 HTML 当成非法字符拒绝
• 在 Zapier 的测试日志里看到 HTML 被自动转义成 <div>
<ul>
<li>所有 HTML 必须提前写好、验证过格式(尤其闭合标签、引号),Zapier 不校验语法</li>
<li>内联样式优先,别依赖外部 <code><link> 或 @import —— 邮箱和多数 API 不加载外链资源
Text Formatter 或 Code by Zapier 做变量插入时,确保 HTML 结构不被破坏(比如变量里含 < 会崩掉结构)用 Code by Zapier 注入动态内容最可控
想让 HTML 模板带数据(比如用户姓名、订单号),别靠 Zapier 内置的「模板字段」拼接,容易 XSS 或结构错乱。直接上 Code by Zapier(JavaScript),手动拼字符串或用模板字面量。
使用场景:生成带客户名、金额、按钮链接的交易确认邮件
立即学习“前端免费学习笔记(深入)”;
const html = `
<div style="font-family: sans-serif;">
<h2>Hi ${inputData.name}</h2>
<p>Your order #${inputData.order_id} is confirmed.</p>
<a href="${inputData.confirm_url}" style="background: #007bff; color: white; padding: 8px 16px;">
View Order
</a>
</div>
`;
output = { html };
-
inputData是 Zapier 自动传进来的对象,字段名必须和前一步输出的 key 完全一致(区分大小写) - 避免在
${...}里直接插用户输入;先用inputData.text.replace(/<|>/g, '')过滤尖括号防注入 - 返回的
output必须是对象,且 key 名要和下一步动作要求的字段名匹配(比如 Email 动作要的是html字段)
发邮件时 HTML 渲染失败的三个硬限制
Gmail、Outlook 等客户端对 HTML 支持极不统一,Zapier 本身不干预,但你得主动绕开它们的雷区。
- 不用
<style>块,全部改用内联属性(<div style="color:red">可以,<style>div{color:red}</style>大概率失效) - 禁用 Flexbox、Grid、
@media查询——移动端邮件基本不认 - 图片必须用绝对 URL(
https://开头),且建议加alt和固定width/height,否则 Outlook 会留大片空白
性能影响:HTML 超过 100KB 容易触发 Gmail 截断,Zapier 日志里看不到报错,但收件人只能看到前半截。
Webhook 调用第三方服务时 HTML 要手动编码
如果目标 API 文档写着 “body 接收 HTML 字符串”,别直接把原始 HTML 塞进请求体——很多 API(如 Notion、Slack)会把 < 当非法字符拒收。
正确做法:在 Webhook 步骤前加一个 Code by Zapier,用 encodeURIComponent() 或 Base64 编码:
output = {
encoded_html: Buffer.from(inputData.html, 'utf8').toString('base64')
};
- 不是所有 API 都需要编码,先查文档关键词:
html encoding、content-type: text/html、escaped - 如果 API 明确要求
Content-Type: text/html,就别编码,但务必确保 HTML 里没有未转义的双引号或换行符 - 用
Test功能时,点开「Raw output」看实际发出去的字符串,别只信预览框
最容易被忽略的是换行符:Zapier 的字段编辑器里按 Enter 产生的 \n,在 HTML 里会被当空白字符渲染,但某些 API 会当成非法控制字符。统一用 <br> 替代。











