使用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"
}
]
}
],
:
},
:
}
以下是收到的电子邮件。 &#34;标题A&#34;和&#34;标题B&#34;预计在&#34; TITLE&#34;。
之后code generated template
Hi John Doe,
TITLE, THIS Array
TITLE, THIS Array
答案 0 :(得分:3)
Mandrill决定用一些可怕的,可怕的名字创建自定义车把助手:
如果您的对象恰好有title
和url
的键,那么 title
和url
肯定会让您感到悲伤。为什么他们没有为toTitleCase
和encodeUrl
之类的帮助者命名。
就数组和#each
而言,您可以使用{{this.title}}
代替{{title}}
解决此问题。
答案 1 :(得分:1)
在使用Mandrill的示例代码here进行测试后,我发现关键字“标题”不起作用。 Dunno的原因(Mandrill的保留关键字?),但用“title1”,“titleX”或其他东西替换它可以正确呈现。
{
"name": "posts",
"content": [
{
"title": "blah blah" // "title1" or something else works
},
}
答案 2 :(得分:1)
使用把手作为合并语言&#39; title&#39;是在把手中使用的保留的helpername,它使您的文本成为标题案例。如果您默认只执行{{title}},则将其视为标题为空文本。尝试给它{{title title}}哪个应该有效或将键名更改为其他东西(如果你不想在标题的情况下你的标题)
答案 3 :(得分:1)
https://mandrill.zendesk.com/hc/en-us/articles/205582537-Using-Handlebars-for-dynamic-content 使用此链接可以使用全局变量轻松使用代码中的句柄。