Sendgrid中的replace令牌列表

我正在向单个用户发送单个交易电子邮件,并希望在电子邮件中embedded一个项目列表。 我可以使用Node.js中的NPM包“sendgrid”添加单个replace值 – https://github.com/sendgrid/sendgrid-nodejs :

email.addFilter('templates', 'enable', 1); email.addFilter('templates', 'template_id', '11122233445....'); email.addSubstitution('{{TOKEN1}}', 'My Token1 Replacement'); 

但我看不到如何将项目列表添加到sendgrid中的模板。 使用Mandrill我可以使用Handlebars并执行以下操作。 列表:

 items: [ {name: "one", url: "/one"}, {name: "two", url: "/two"}, ]; 

在模板中:

 <ul> {{#each ITEMS}} <li> {{name}} - <a href="{{url}}">Blah</a> </li> {{/each}} </ul> 

然后在代码中:

 var rcpt = { "rcpt": email, "vars": [ { "name":"ITEMS", "content": items } ] }; mergeVars.push(rcpt); var message = { ... "merge_vars": mergeVars, } mandrillClient.messages.sendTemplate({... "message": message }); 

导致:

 <ul> <li>one <a href="/one">Blah</a></li> <li>two <a href="/two">Blah</a></li> </ul> 

有没有办法在Sendgrid中做到这一点?

SendGrid没有模板中的each逻辑。

最好的解决方法是在模板中:

 <ul> {item1} {item2} {item3} </ul> 

然后在您的replace中,您可以根据具体情况填充适当的<li> item 1 details</li>或NULL。 确保您的模板具有与最大列表大小一样多的Substitution标签,并且对于这些NULL项目具有默认值,以便即使没有项目也可以填充它们。