You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mandrill:如何为Handlebars模板格式化复杂数据

解决Mandrill模板无法读取发送数据的问题

嘿,我之前也踩过Mandrill模板变量不生效的坑,咱们来一步步排查解决这个问题:

1. 严格匹配官方要求的变量格式

首先要确认你传递的global_merge_vars(如果是针对单个收件人的局部变量则用merge_vars)是完全符合官方要求的数组结构——每个对象必须包含小写的name和content字段,这俩字段名是大小写敏感的!要是你写成Name或者NAME,模板里的{{user_name}}绝对找不到对应值。

给你一个标准的请求数据示例(Mandrill API通常接受JSON格式):

{
  "key": "你的Mandrill API密钥",
  "message": {
    "to": [{"email": "user@example.com"}],
    "subject": "欢迎注册",
    "template_name": "你的欢迎模板名称",
    "template_content": [],
    "global_merge_vars": [
      { "name": "user_name", "content": "Mandrill_User1" },
      { "name": "user_email", "content": "user@example.com" }
    ]
  }
}

2. 核对模板变量的语法与命名

Mandrill模板里的变量用双大括号{{变量名}},要保证变量名和你数据里name字段的值完全一致——包括大小写、下划线这些细节。比如模板里写{{User_Name}},但数据里是user_name,肯定匹配不上。

另外,要是你给特定收件人单独传变量,别放到global_merge_vars里,得用merge_vars数组,示例如下:

"merge_vars": [
  {
    "rcpt": "user@example.com",
    "vars": [
      { "name": "user_name", "content": "Mandrill_User1" }
    ]
  }
]

3. 确认模板的关联状态

  • 检查调用API时填的template_name和Mandrill后台创建的模板名称完全一致,别打错字或者多了空格;
  • 确保模板处于「已发布」状态,草稿状态的模板可能无法被API正常调用。

4. 用渲染接口快速排查问题

你可以先调用Mandrill的templates/render API来测试模板渲染结果,这个接口会直接返回渲染后的HTML,能帮你快速区分是数据格式问题还是模板本身的问题。请求示例:

{
  "key": "你的Mandrill API密钥",
  "template_name": "你的欢迎模板名称",
  "template_content": [],
  "merge_vars": [
    { "name": "user_name", "content": "Mandrill_User1" }
  ]
}

如果这个接口返回的结果里变量还是没被替换,那大概率是数据格式或变量名不匹配;如果渲染正常,那可能是发送邮件时的参数配置有误。

内容的提问来源于stack exchange,提问作者Dave Sag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:27:03