Last active
January 23, 2021 17:06
-
-
Save codediodeio/f50c2d2f3cc0243814a40f71f221d2ab to your computer and use it in GitHub Desktop.
Transactional Email Firebase Cloud Function with Sendgrid
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
}); | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment