Search Lessons, Code Snippets, and Videos
search by algolia
X
#native_cta# #native_desc# Sponsored by #native_company#

Firebase Cloud Function for Transactional Email With Sendgrid

Episode 10 written by Jeff Delaney
full courses and content on fireship.io

This lesson has been updated for Angular 5, Firestore, and the new SendGrid v3 NodeJS packages. Get the latest and greatest Transactional Email Lesson.

An example of SendGrid integrated with Firebase cloud functions. This function can be triggered via http to send transactional email in a Firebase app.

var functions = require('firebase-functions');
const sendgrid = require('sendgrid')
const client = sendgrid("YOUR_SG_API_KEY")
function parseBody(body) {
var helper = sendgrid.mail;
var fromEmail = new helper.Email(body.from);
var toEmail = new helper.Email(body.to);
var subject = body.subject;
var content = new helper.Content('text/html', body.content);
var mail = new helper.Mail(fromEmail, subject, toEmail, content);
return mail.toJSON();
}
exports.httpEmail = functions.https.onRequest((req, res) => {
return Promise.resolve()
.then(() => {
if (req.method !== 'POST') {
const error = new Error('Only POST requests are accepted');
error.code = 405;
throw error;
}
const request = client.emptyRequest({
method: 'POST',
path: '/v3/mail/send',
body: parseBody(req.body)
});
return client.API(request)
})
.then((response) => {
if (response.body) {
res.send(response.body);
} else {
res.end();
}
})
.catch((err) => {
console.error(err);
return Promise.reject(err);
});
})
view raw index.js hosted with ❤ by GitHub