我必须用merge_vars
进行替换。
{
"key":"some key",
"template_name":"order-confirmation",
"template_content":[
{
"name":"ORDERNUMBER",
"content":"12312312321"
},
{
"name":"PRICE",
"content":"35.10"
},
{
"name":"NAME",
"content":"Some name"
},
{
"name":"PICKUPDATE",
"content":"2013-05-10"
},
{
"name":"ORDERITEMS",
"content":[
{
"NUMPRODUCTS":"26",
"PRODUCTNAME":"Milk",
"PRODUCTPRICE":"1.35 EUR"
}
]
},
{
"name":"SERVICENUMBER",
"content":"12345"
},
{
"name":"PICKUPPOINT",
"content":"AAA 350"
},
"message":{
"from_email":"support@support.com",
"to":[
{
"email":"asdasd@asda.com"
}
],
"subject":"Subject text",
"attachments":[
]
},
"async":false
}
}
如何制作html占位符?我这样做了,但它不起作用。我只对ORDERITEMS
感兴趣。
<tr>
<td>*|ORDERITEMS:NUMPRODUCTS|*</td>
<td>*|ORDERITEMS:PRODUCTNAME|*</td>
<td>*|ORDERITEMS:PRODUCTPRICE|*</td>
</tr>
据我所知,使用Mandrill中的普通模板引擎,content
属性唯一支持的类型是string
,因此无法提供结构。
最近,(2015年1月13日)Mandrill宣布支持车把模板,并有可能在content
中包含数组。
使用这个新的模板语言,不仅可以根据需要访问子属性,还可以在数组内循环,甚至嵌套do循环。(见博客上的评论)
这是一个从博客文章中提取的循环示例:
合并变量或模板内容:
{
"name": "products",
"content": [
{
"img": "http://kbcdn.mandrill.com/nesting-penguin.png",
"qty": 2,
"sku": "PENG001",
"name": "Penguin",
"description": "Solid wood, hand-painted penguin nesting doll with 5 different sizes included. Limited Edition.",
"price": "12.99",
"ordPrice": "25.98"
},
{
"img": "http://kbcdn.mandrill.com/nesting-bear.png",
"qty": 3,
"sku": "BBEAR001",
"name": "Brown bear",
"description": "Solid wood, hand-painted brown bear nesting doll. Coordinates with our entire Bear collection. Includes 6 nested sizes.",
"price": "12.99",
"ordPrice": "38.97"
}
]
}
在模板中是这样使用它的:
{{#each products}}
<tr class="item">
<td valign="top" class="textContent">
<img src="{{img}}" width="50" height="75" class="itemImage" />
<h4 class="itemName">{{name}}</h4>
<span class="contentSecondary">Qty: {{qty}} x ${{price}}/each</span><br />
<span class="contentSecondary sku"><em>{{sku}}</em></span><br />
<span class="contentSecondary itemDescription">{{description}}</span>
</td>
<td valign="top" class="textContent alignRight priceWidth">
${{ordPrice}}
</td>
</tr>
{{/each}}
在你的情况下,你可以这样做:
{{#each ORDERITEMS}}
<tr>
<td>{{NUMPRODUCTS}}*</td>
<td>{{PRODUCTNAME}}</td>
<td>{{PRODUCTPRICE}}</td>
</tr>
{{/each}}
如果有人有这些相同的问题,并且文档解决方案不起作用,请检查您的消息json中的merge_language字段。它必须定义为车把
10年过去了,这个问题仍然有用,但这里有一些更新给那些可能需要它的人。
Handlebars是尝试在mandrill/mailchimp电子邮件中呈现列表的方法。这里的主要要点是,要使用车把,你需要确保启用了"车把"。默认设置为mailchimp
。
在API中,这是通过将merge_language
添加到message
字典来完成的:
merge_language: the merge tag language to use when evaluating merge
tags, either mailchimp or handlebars Possible values: "mailchimp"
or "handlebars".
例如:
response = client.messages.send_template(
{
"template_name": "template_name",
"template_content": [{}],
"message": {
"merge_language": "handlebars",
}
}
)