【问题标题】:Adding Array Data to Sendgrid Templates将数组数据添加到 Sendgrid 模板
【发布时间】:2015-10-01 08:49:56
【问题描述】:

我想使用 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 是否/如何增加价值。

【问题讨论】:

    标签: javascript arrays sendgrid


    【解决方案1】:

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

    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 控制器的地方设置的变量。 示例:

    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 方法如下所示。

    再举一个例子。这是我使用 -product- 标签的 sendGrid 模板中的一个 sn-p。而且您不必使用-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>
    

    希望这会有所帮助!

    【讨论】:

    • 嘿,谢谢!出于某种原因,我的电子邮件仅在我将此空白设置为 setHtml 函数时才有效。你知道这是为什么吗? sgEmail.setHtml(' ');没有这一行,我会得到一个错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多