2015-11-24 72 views
1

我正在向單個用戶發送單個交易電子郵件,並且希望在電子郵件中嵌入項目列表。我可以在Node.js的添加使用NPM包「sendgrid」單替換值 - https://github.com/sendgrid/sendgrid-nodejsSendgrid中的替換令牌列表

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

SendGrid在模板中沒有each邏輯。

這種情況的最好的解決方法是在模板:

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

然後在你的換人,你會填充任何適當的<li> item 1 details</li>或NULL視情況而定。確保您的模板具有與您的最大列表大小一樣多的Substitution標籤,並且您爲這些NULL項目設置了默認值,以便即使沒有項目也可以填充它們。