28
loading...
This website collects cookies to deliver better user experience
Nodemailer is a module for Node.js applications to allow easy as cake email sending.
It is very easy to settle and integrate into an existing project.
npm init
npm install --save firebase
// Firebase App (the core Firebase SDK) is always required and must be listed first
import firebase from "firebase/app";
// Add the Firebase products that you want to use
import "firebase/auth";
import "firebase/firestore";
const firebaseConfig = {
// ... the values would be given to you when you create the project on the firebase console.
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
firebase functions:config:set x.key="THE API KEY" x.id="THE CLIENT ID"
firebase functions:config:set gmail.useremail="[email protected]" gmail.clientid="yourclientid.apps.googleusercontent.com" gmail.refreshtoken="1//04zKnDTh1mXdLCgYI-yourrefreshtoken" gmail.clientsecret="mbFQnYOurCLienTSecREt"
firebase functions:config:get > .runtimeconfig.json
firebase functions:config:get | ac .runtimeconfig.json
functions.config()
. To access these environment variables previously set, we can do something like: functions.config().envkey.envvalue
let { useremail, refreshtoken, clientid, clientsecret } =
functions.config().gmail;
npm install nodemailer
const functions = require("firebase-functions");
const admin = require("firebase-admin");
const nodemailer = require("nodemailer");
admin.initializeApp();
/** defining and destructuring environments config for firebase functions */
let { useremail, refreshtoken, clientid, clientsecret } =
functions.config().gmail;
/**create reusable transporter object using the gmail SMTP transport */
let transporter = nodemailer.createTransport({
host: "smtp.gmail.com",
port: 465,
secure: true,
auth: {
type: "OAuth2",
user: useremail,
clientId: clientid,
clientSecret: clientsecret,
refreshToken: refreshtoken,
},
});
//our firebase cloud function
exports.userCreate = functions.auth.user().onDelete((user) => {
//Defining our transport object
const mailOptions = {
from: "[email protected]",
to: user.email,
subject: "Thanks for Signing up",
html: `<div
Hey, I am an HTML template
</div>`,
};
// send mail with defined transport object
return transporter.sendMail(mailOptions).catch((err)=>{
console.log(err);
});
});
28