Sendgrid中的替换标记列表

时间:2015-11-24 21:06:05

标签: node.js email templates sendgrid mandrill

我正在向单个用户发送单个交易电子邮件,并希望在电子邮件中嵌入项目列表。我可以使用Node.js中的NPM包“sendgrid”添加单个替换值 - 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中执行此操作?

1 个答案:

答案 0 :(得分:1)

SendGrid在模板中没有each逻辑。

最好的解决方法是使用模板:

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

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