This sample shows how to send a confirmation emails to users who are subscribing/un-subscribing to a newsletter.
See file functions/index.js for the email sending code.
Sending emails is performed using nodemailer a node based Email client with comprehensive EMail server setup. For simplicity, in this sample we're showing how to send email through SMTP using a Gmail account. Be aware that Gmail has an email sending quota. If you are planning on sending a large number of emails you should use a professional email sending platform such as Sendgrid, Mailjet or Mailgun.
The dependencies are listed in functions/package.json.
When a signed-in user subscribes or unsubscribes to the mailing list we change the subscribedToMailingList
boolean:
/functions-project-12345
/users
/$uid
subscribedToMailingList: true,
email: "[email protected]"
Then the email stored here is used by the function to send the email.
The function triggers on changes to /users/$uid
and exits if there are no changes to subscribedToMailingList
.
- Create a Firebase Project using the Firebase Console.
- Enable the Google Provider in the Auth section.
- Clone or download this repo and open the
email-confirmation
directory. - You must have the Firebase CLI installed. If you don't have it install it with
npm install -g firebase-tools
and then configure it withfirebase login
. - Configure the CLI locally by using
firebase use --add
and select your project in the list. - Install dependencies locally by running:
cd functions; npm install; cd -
- To be able to send emails with your Gmail account: enable access to Less Secure Apps and Display Unlock Captcha. For accounts with 2-step verification enabled Generate an App Password.
- Set the
gmail.email
andgmail.password
Google Cloud environment variables to match the email and password of the Gmail account used to send emails (or the app password if your account has 2-step verification enabled). For this use:firebase functions:config:set gmail.email="[email protected]" gmail.password="secretpassword"
This sample comes with a web-based UI for testing the function. To test it out:
- Deploy your project using
firebase deploy
- Open the app using
firebase open hosting:site
, this will open a browser. - Sign in the web app in the browser using Google Sign-In and delete your account using the button on the web app. You should receive email confirmations for each actions.