javascript - 将数组数据添加到 Sendgrid 模板

标签 javascript arrays sendgrid

我想使用 Sendgrid 向每个用户发送包含唯一数据的发票电子邮件。这似乎是一件如此简单的事情,以至于没有人想到包括如何做到这一点的指导。在电子邮件中,我想用类似数组的“N”行填充四列:

[{date: 05/05/15, amount: $30, 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 作为一个选项进行了研究,但考虑到我认为这是一个相对简单的用例,这似乎是一个不必要的并发症;我不确定 sendwithus 是否/如何增加值(value)。

最佳答案

我现在正在做同样的事情。

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 模板中,我有一个表格,在其中一个表格单元格中我有“-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 Controller 的地方设置的变量。 示例:

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>

希望这对您有所帮助!

关于javascript - 将数组数据添加到 Sendgrid 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32883246/

相关文章:

javascript - node.js 来自服务器的空回复

c# - 如何使用 JSON.net 处理同一属性的单个项目和数组

python - 在 Django 中使用 SendGrid Web API 而不是 SMTP 作为发送电子邮件的传输机制有什么优势?

google-app-engine - 去 sendgrid 失败

javascript - 停止因按键而触发模糊事件

Javascript 日期对象到日期字符串

javascript - 在 ASP.NET MVC 嵌套 View 中应将 javascript 放在哪里?

javascript - 将数组的数组作为项目转换为以对象作为项目的对象

forms - primeFaces : fileUpload to byte[]

c - 如何从文件中读取一个数组,对其进行排序,并将其打印到另一个文件中?