javascript - Adding Array Data to Sendgrid Templates - Stack Overflow

I want to send an invoice email with data unique to each user with Sendgrid.This seems like something

I want to send an invoice email with data unique to each user with Sendgrid. This seems like something so simple that no one has thought to include directions on how to do this. Within the email I want to populate four columns with 'N' rows with an array like:

[{date: 05/05/15, amount: $30, user: abc123, type: A}, 
{date: X, amount: Y, user: Z, type: B} . . . ]

I don't understand how I create this template or where this template is supposed to exist for me to call it to populate for a given customer's data.

I looked at the Sendgrid videos: .html

along with several other tutorial options like: How to pass dynamic data to email template desgined on sendgrid webapp ? :-| Sendgrid.

Unfortunately it was less than clear how to iterate through an array. I use Angular but since that lives on the front end and my sendgrid lives in Express I'm not sure that's a solution either.

I took a look at sendwithus as an option but it seems like it's probably an unnecessary plication given what I believe is a relatively simple use case; I wasn't sure if/how sendwithus is adding value.

I want to send an invoice email with data unique to each user with Sendgrid. This seems like something so simple that no one has thought to include directions on how to do this. Within the email I want to populate four columns with 'N' rows with an array like:

[{date: 05/05/15, amount: $30, user: abc123, type: A}, 
{date: X, amount: Y, user: Z, type: B} . . . ]

I don't understand how I create this template or where this template is supposed to exist for me to call it to populate for a given customer's data.

I looked at the Sendgrid videos: https://sendgrid./docs/User_Guide/Templates/index.html https://www.youtube./watch?v=Z0TmOqQarww

along with several other tutorial options like: How to pass dynamic data to email template desgined on sendgrid webapp ? :-| Sendgrid.

Unfortunately it was less than clear how to iterate through an array. I use Angular but since that lives on the front end and my sendgrid lives in Express I'm not sure that's a solution either.

I took a look at sendwithus as an option but it seems like it's probably an unnecessary plication given what I believe is a relatively simple use case; I wasn't sure if/how sendwithus is adding value.

Share Improve this question asked Oct 1, 2015 at 8:49 rashadbrashadb 2,5434 gold badges33 silver badges60 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 5

I am working on the same thing right now.

Sendgrid Node Module on github, shows how to install sendgrid for node

First you want to create a javascript object to hold your configuration.

 var proccessing_payload   = {
    to      :   '[email protected]',
    from    :   '[email protected]',
    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>'

};

That is the base setup you will need to send an email.

Now you will want to add some data to send over to your template you have created inside your sendGrid Dashboard. To do this I just extended the processing_payload object.

First : Set your filters to tell sendGrid what template you want to use.

Note* I only have one template version. I am not using other versions.

proccessing_payload.filters = {
   "templates": {
      "settings": {
        "enable": 1,
        "template_id": <YOUR TEMPLATE ID FROM SENDGRID>
      }
    }
};

Second : You need to map your data to your sendGrid Template items.

Note* In my sendGrid template I have a table and inside one of the table cells I have "-product-". That "-product-" text string will be replaced with that ever I put in the object. Example below.

 proccessing_payload.setSubs = {
   "-product-" : ['This will be the replacement for the key. You will see this text in my email']
 };

Now we send the email:

_sendGrid.sendEmail(proccessing_payload);

_sendGrid is the variable I set where I required the sendGrid controller I created. Example :

var _sendGrid = require('./sendgrid.server.controller.js');

More reference

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 : '[email protected]'
};

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);
});}

The sendEmail method inside my sendgrid.server.contoller.js looks like this.

For a little further example. Here is a snippet from my sendGrid template where I am using the -product- tag. And you dont have to use -product-. You can use #product# or whatever.

    <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>

Hope this helps!

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745517635a4631093.html

相关推荐

  • javascript - Adding Array Data to Sendgrid Templates - Stack Overflow

    I want to send an invoice email with data unique to each user with Sendgrid.This seems like something

    4小时前
    40

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信