带有把手“每个循环”的 Mandrill API 不起作用
Posted
技术标签:
【中文标题】带有把手“每个循环”的 Mandrill API 不起作用【英文标题】:Mandrill API with Handlebars "each-loop" not working 【发布时间】:2015-06-17 17:57:25 【问题描述】:使用 Mandrill API 发送事务通讯时遇到问题。我为模板参数选择了 Handlebars。用户名显示正确,但列表中的数据(帖子标题)为空。请帮忙指出我做错了什么。谢谢!
模板如下,发送到端点/messages/send.json
:
func genhtmlTemplate() string
return "code generated template<br>" +
"Hi name, <br>" +
"#each posts<div>" +
"TITLE title, THIS this<br>" +
"</div>/each"
我在 mandrillapp.com 的设置面板中的 API 日志显示了参数:
"key": "xxxxxxxxxx",
"message":
:
"merge_language": "handlebars",
"global_merge_vars": null,
"merge_vars": [
"rcpt": "xxxxxx@gmail.com",
"vars": [
"name": "posts",
"content": [
"title": "title A"
,
"title": "title B"
,
]
,
"name": "name",
"content": "John Doe"
]
],
:
,
:
下面是收到的电子邮件。 “标题 A”和“标题 B”应在“TITLE”之后。
code generated template
Hi John Doe,
TITLE, THIS Array
TITLE, THIS Array
【问题讨论】:
mandrill.zendesk.com/hc/en-us/articles/… 使用此链接在代码中使用句柄栏,使用全局变量非常容易。 【参考方案1】:Mandrill 决定用一些可怕的名字创建自定义车把助手:
https://mandrill.zendesk.com/hc/en-us/articles/205582537-Using-Handlebars-for-Dynamic-Content#inline-helpers-available-in-mandrill
title
和 url
如果你的对象碰巧有名为 title
和 url
的键,那肯定会让你伤心。为什么他们没有将他们的助手命名为 toTitleCase
和 encodeUrl
之类的,我无法理解。
就数组和#each
而言,您可以使用this.title
而不是title
来解决它。
【讨论】:
【参考方案2】:在使用 Mandrill 的示例代码here 进行测试后,我发现关键的“标题”不起作用。不知道原因(Mandrill 的保留关键字?)但将其替换为“title1”、“titleX”或其他可以正确呈现的内容。
"name": "posts",
"content": [
"title": "blah blah" // "title1" or something else works
,
【讨论】:
【参考方案3】:在使用把手作为合并语言时,“标题”是保留的帮助名称,用于把手中的文本以标题大小写。如果默认情况下只做 title,它会将空文本视为标题。尝试给它 title title 这应该可以工作或将键名更改为其他名称(如果您不希望标题出现在标题中)
【讨论】:
【参考方案4】:我知道这已经晚了,但它可能对目前尝试调试此问题的人有用。请注意山魈中的这一点documentation
通过合并标签添加动态内容的主要方法有两种:Handlebars 或 Mailchimp 合并语言。您可能已经通过创建和编辑 Mailchimp 模板熟悉了 Mailchimp 合并语言。我们还提供 Handlebars 的自定义实现,它是开源的并提供更大的灵活性。
要设置您的合并语言,请导航至发送默认值,然后从合并语言下拉菜单中选择 Mailchimp 或 Handlebars。
我在 Sending Blue 上遇到了类似的问题,他们的默认配置不启用把手,因此不会评估它们。
【讨论】:
以上是关于带有把手“每个循环”的 Mandrill API 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
带有 sinatra 的 Mandrill API 电子邮件队列
使用车把和 Mandrill-dotnet -library 在 mandrill 中的每个循环