将数组数据添加到 Sendgrid 模板
Adding Array Data to Sendgrid Templates
我想使用 Sendgrid 向每个用户发送包含唯一数据的发票电子邮件。这似乎是一件如此简单的事情,以至于没有人想到包括如何做到这一点的指导。在电子邮件中,我想用 'N' 行填充四列,数组如下:
[{date: 05/05/15, amount: , user: abc123, type: A},
{date: X, amount: Y, user: Z, type: B} . . . ]
我不明白我是如何创建这个模板的,或者这个模板应该存在于何处,以便我调用它来填充给定客户的数据。
我看了 Sendgrid 视频:
https://sendgrid.com/docs/User_Guide/Templates/index.html
https://www.youtube.com/watch?v=Z0TmOqQarww
以及其他几个教程选项,例如:
How to pass dynamic data to email template desgined on sendgrid webapp ? :-| Sendgrid。
不幸的是,不太清楚如何遍历数组。我使用 Angular,但由于它存在于前端,而我的 sendgrid 存在于 Express 中,我也不确定这是否是一个解决方案。
我将 sendwithus 作为一个选项进行了查看,但考虑到我认为这是一个相对简单的用例,这似乎是一个不必要的复杂问题;我不确定 if/how sendwithus 是否在增加价值。
我现在也在做同样的事情。
Sendgrid Node Module on github, shows how to install sendgrid for node
首先你要创建一个 javascript 对象来保存你的配置。
var proccessing_payload = {
to : 'webdev@example.com',
from : 'processing@example.com',
subject : 'Transaction ID : 123 ~ Order is ready for processing',
text : 'You have a new order to process.\n Please login to process your order. \n DON'T FORGET TO SEND AN EMAIL WITH : tracking information and other useful information.',
html : '<p>You have a new order to process. Please login to process your order. <br/> DON'T FORGET TO SEND AN EMAIL WITH : tracking information and other useful information.</p>'
};
这是您发送电子邮件所需的基本设置。
现在您需要添加一些数据以发送到您在 sendGrid 仪表板中创建的模板。为此,我只是扩展了 processing_payload 对象。
首先:设置您的过滤器以告诉 sendGrid 您想要使用什么模板。
注意* 我只有一个模板版本。我没有使用其他版本。
proccessing_payload.filters = {
"templates": {
"settings": {
"enable": 1,
"template_id": <YOUR TEMPLATE ID FROM SENDGRID>
}
}
};
其次:您需要将数据映射到您的 sendGrid 模板项目。
注意* 在我的 sendGrid 模板中,我有一个 table,在其中一个 table 单元格中,我有“-product-”。该“-product-”文本字符串将替换为我放入对象中的字符串。示例如下。
proccessing_payload.setSubs = {
"-product-" : ['This will be the replacement for the key. You will see this text in my email']
};
现在我们发送邮件:
_sendGrid.sendEmail(proccessing_payload);
_sendGrid 是我在需要我创建的 sendGrid 控制器的地方设置的变量。
示例:
var _sendGrid = require('./sendgrid.server.controller.js');
更多参考
exports.sendEmail = function(options){
var _options = options || {};
var payload = {
to : options.to,
from : options.from,
subject : options.subject,
text : options.text,
html : options.html,
setFrom : options.setFrom,
replyto : options.replyto ? options.replyto : 'no-reply@poshbellies.com'
};
var email = new sendgrid.Email(payload);
if(options.filters){
email.setFilters(options.filters);
}
if(options.setSubs){
email.setSubstitutions(options.setSubs);
}
sendgrid.send(email, function(err, json) {
if (err) { console.error(err); }
console.log('//////--- SEND GRID : ');
console.log(json);
});}
我的 sendgrid.server.contoller.js 中的 sendEmail 方法如下所示。
再举个例子。这是我的 sendGrid 模板中的一个片段,我在其中使用了 -product- 标签。而且您不必使用 -product-。您可以使用#product# 或其他任何内容。
<table width="100%">
<tbody>
<tr>
<th>qty</th>
<th>category</th>
<th>Product</th>
</tr>
<tr>
<td align="center">-qty-</td>
<td align="center">-category-</td>
<td align="center">-product-</td>
</tr>
</tbody>
</table>
希望对您有所帮助!
我想使用 Sendgrid 向每个用户发送包含唯一数据的发票电子邮件。这似乎是一件如此简单的事情,以至于没有人想到包括如何做到这一点的指导。在电子邮件中,我想用 'N' 行填充四列,数组如下:
[{date: 05/05/15, amount: , user: abc123, type: A},
{date: X, amount: Y, user: Z, type: B} . . . ]
我不明白我是如何创建这个模板的,或者这个模板应该存在于何处,以便我调用它来填充给定客户的数据。
我看了 Sendgrid 视频: https://sendgrid.com/docs/User_Guide/Templates/index.html https://www.youtube.com/watch?v=Z0TmOqQarww
以及其他几个教程选项,例如: How to pass dynamic data to email template desgined on sendgrid webapp ? :-| Sendgrid。
不幸的是,不太清楚如何遍历数组。我使用 Angular,但由于它存在于前端,而我的 sendgrid 存在于 Express 中,我也不确定这是否是一个解决方案。
我将 sendwithus 作为一个选项进行了查看,但考虑到我认为这是一个相对简单的用例,这似乎是一个不必要的复杂问题;我不确定 if/how sendwithus 是否在增加价值。
我现在也在做同样的事情。
Sendgrid Node Module on github, shows how to install sendgrid for node
首先你要创建一个 javascript 对象来保存你的配置。
var proccessing_payload = {
to : 'webdev@example.com',
from : 'processing@example.com',
subject : 'Transaction ID : 123 ~ Order is ready for processing',
text : 'You have a new order to process.\n Please login to process your order. \n DON'T FORGET TO SEND AN EMAIL WITH : tracking information and other useful information.',
html : '<p>You have a new order to process. Please login to process your order. <br/> DON'T FORGET TO SEND AN EMAIL WITH : tracking information and other useful information.</p>'
};
这是您发送电子邮件所需的基本设置。
现在您需要添加一些数据以发送到您在 sendGrid 仪表板中创建的模板。为此,我只是扩展了 processing_payload 对象。
首先:设置您的过滤器以告诉 sendGrid 您想要使用什么模板。
注意* 我只有一个模板版本。我没有使用其他版本。
proccessing_payload.filters = {
"templates": {
"settings": {
"enable": 1,
"template_id": <YOUR TEMPLATE ID FROM SENDGRID>
}
}
};
其次:您需要将数据映射到您的 sendGrid 模板项目。
注意* 在我的 sendGrid 模板中,我有一个 table,在其中一个 table 单元格中,我有“-product-”。该“-product-”文本字符串将替换为我放入对象中的字符串。示例如下。
proccessing_payload.setSubs = {
"-product-" : ['This will be the replacement for the key. You will see this text in my email']
};
现在我们发送邮件:
_sendGrid.sendEmail(proccessing_payload);
_sendGrid 是我在需要我创建的 sendGrid 控制器的地方设置的变量。 示例:
var _sendGrid = require('./sendgrid.server.controller.js');
更多参考
exports.sendEmail = function(options){
var _options = options || {};
var payload = {
to : options.to,
from : options.from,
subject : options.subject,
text : options.text,
html : options.html,
setFrom : options.setFrom,
replyto : options.replyto ? options.replyto : 'no-reply@poshbellies.com'
};
var email = new sendgrid.Email(payload);
if(options.filters){
email.setFilters(options.filters);
}
if(options.setSubs){
email.setSubstitutions(options.setSubs);
}
sendgrid.send(email, function(err, json) {
if (err) { console.error(err); }
console.log('//////--- SEND GRID : ');
console.log(json);
});}
我的 sendgrid.server.contoller.js 中的 sendEmail 方法如下所示。
再举个例子。这是我的 sendGrid 模板中的一个片段,我在其中使用了 -product- 标签。而且您不必使用 -product-。您可以使用#product# 或其他任何内容。
<table width="100%">
<tbody>
<tr>
<th>qty</th>
<th>category</th>
<th>Product</th>
</tr>
<tr>
<td align="center">-qty-</td>
<td align="center">-category-</td>
<td align="center">-product-</td>
</tr>
</tbody>
</table>
希望对您有所帮助!