Skip to content

Latest commit

 

History

History
 
 

email-confirmation

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Send Confirmation Emails with Cloud Functions

This sample shows how to send a confirmation emails to users who are subscribing/un-subscribing to a newsletter.

Functions Code

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.

Sample Database Structure

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: "user@domain.com"

Then the email stored here is used by the function to send the email.

Trigger rules

The function triggers on changes to /users/$uid and exits if there are no changes to subscribedToMailingList.

Setting up the sample

  1. Create a Firebase Project using the Firebase Console.
  2. Enable the Google Provider in the Auth section.
  3. Clone or download this repo and open the email-confirmation directory.
  4. 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 with firebase login.
  5. Configure the CLI locally by using firebase use --add and select your project in the list.
  6. Install dependencies locally by running: cd functions; npm install; cd -
  7. Set the gmail.email and gmail.password Google Cloud environment variables to match the email and password of the Gmail account used to send emails. For this use:
    firebase functions:config:set gmail.email="myusername@gmail.com" gmail.password="secretpassword"

Deploy and test

This sample comes with a web-based UI for testing the function. To test it out:

  1. Deploy your project using firebase deploy
  2. Open the app using firebase open hosting:site, this will open a browser.
  3. 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.