var sg = require('sendgrid')(process.env.SENDGRID_API_KEY) /////////////////////////////////////////////////// // Create a batch ID // POST /mail/batch var request = sg.emptyRequest() request.method = 'POST' request.path = '/v3/mail/batch' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) }) /////////////////////////////////////////////////// // Validate batch ID // GET /mail/batch/{batch_id} var request = sg.emptyRequest() request.method = 'GET' request.path = '/v3/mail/batch/{batch_id}' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) }) /////////////////////////////////////////////////// // v3 Mail Send // POST /mail/send // This endpoint has a helper, check it out [here](https://github.com/sendgrid/sendgrid-nodejs/blob/master/lib/helpers/mail/README.md). var request = sg.emptyRequest() request.body = { "asm": { "group_id": 1, "groups_to_display": [ 1, 2, 3 ] }, "attachments": [ { "content": "[BASE64 encoded content block here]", "content_id": "ii_139db99fdb5c3704", "disposition": "inline", "filename": "file1.jpg", "name": "file1", "type": "jpg" } ], "batch_id": "[YOUR BATCH ID GOES HERE]", "categories": [ "category1", "category2" ], "content": [ { "type": "text/html", "value": "

Hello, world!

" } ], "custom_args": { "New Argument 1": "New Value 1", "activationAttempt": "1", "customerAccountNumber": "[CUSTOMER ACCOUNT NUMBER GOES HERE]" }, "from": { "email": "sam.smith@example.com", "name": "Sam Smith" }, "headers": {}, "ip_pool_name": "[YOUR POOL NAME GOES HERE]", "mail_settings": { "bcc": { "email": "ben.doe@example.com", "enable": true }, "bypass_list_management": { "enable": true }, "footer": { "enable": true, "html": "

Thanks
The SendGrid Team

", "text": "Thanks,/n The SendGrid Team" }, "sandbox_mode": { "enable": false }, "spam_check": { "enable": true, "post_to_url": "http://example.com/compliance", "threshold": 3 } }, "personalizations": [ { "bcc": [ { "email": "sam.doe@example.com", "name": "Sam Doe" } ], "cc": [ { "email": "jane.doe@example.com", "name": "Jane Doe" } ], "custom_args": { "New Argument 1": "New Value 1", "activationAttempt": "1", "customerAccountNumber": "[CUSTOMER ACCOUNT NUMBER GOES HERE]" }, "headers": { "X-Accept-Language": "en", "X-Mailer": "MyApp" }, "send_at": 1409348513, "subject": "Hello, World!", "substitutions": { "id": "substitutions", "type": "object" }, "to": [ { "email": "john.doe@example.com", "name": "John Doe" } ] } ], "reply_to": { "email": "sam.smith@example.com", "name": "Sam Smith" }, "sections": { "section": { ":sectionName1": "section 1 text", ":sectionName2": "section 2 text" } }, "send_at": 1409348513, "subject": "Hello, World!", "template_id": "[YOUR TEMPLATE ID GOES HERE]", "tracking_settings": { "click_tracking": { "enable": true, "enable_text": true }, "ganalytics": { "enable": true, "utm_campaign": "[NAME OF YOUR REFERRER SOURCE]", "utm_content": "[USE THIS SPACE TO DIFFERENTIATE YOUR EMAIL FROM ADS]", "utm_medium": "[NAME OF YOUR MARKETING MEDIUM e.g. email]", "utm_name": "[NAME OF YOUR CAMPAIGN]", "utm_term": "[IDENTIFY PAID KEYWORDS HERE]" }, "open_tracking": { "enable": true, "substitution_tag": "%opentrack" }, "subscription_tracking": { "enable": true, "html": "If you would like to unsubscribe and stop receiving these emails <% clickhere %>.", "substitution_tag": "<%click here%>", "text": "If you would like to unsubscribe and stop receiveing these emails <% click here %>." } } }; request.method = 'POST' request.path = '/v3/mail/send' sg.API(request, function (error, response) { console.log(response.statusCode) console.log(response.body) console.log(response.headers) })