问题
Well, I have looked almost everywhere, and apparently there is Firebase Cloud Functions which can be used to send me an email whenever a new key is created in my database. However, I cannot wrap my head around where to start and how to do it. Can someone help me please.
回答1:
You can indeed use a Cloud Function to send an email each time a new node (i.e. a new key) is created in the database.
Have a look at the documentation for Realtime Database triggers here and at one of the official Cloud Functions sample which shows how to send an email, here.
In the sample, emails are sent in response to the creation and deletion of user accounts, but it is really not difficult to integrate the sample code with a Realtime Database trigger.
For example you could do something like the following, adapted from the sample:
const functions = require('firebase-functions');
const nodemailer = require('nodemailer');
// Configure the email transport using the default SMTP transport and a GMail account.
// For Gmail, enable these:
// 1. https://www.google.com/settings/security/lesssecureapps
// 2. https://accounts.google.com/DisplayUnlockCaptcha
// For other types of transports such as Sendgrid see https://nodemailer.com/transports/
// TODO: Configure the `gmail.email` and `gmail.password` Google Cloud environment variables.
const gmailEmail = functions.config().gmail.email;
const gmailPassword = functions.config().gmail.password;
const mailTransport = nodemailer.createTransport({
service: 'gmail',
auth: {
user: gmailEmail,
pass: gmailPassword,
},
});
// Your company name to include in the emails
// TODO: Change this to your app or company name to customize the email sent.
const APP_NAME = 'xxxxxx';
exports.sendWelcomeEmail = functions.database.ref('/thePathYouWant/{pushId}')
.onCreate((snapshot, context) => {
const createdData = snapshot.val(); // data that was created
const email = createdData.email; // The email of the user. We make the assumption that it is written at the new database node
const displayName = createdData.displayName; // The display name of the user.
return sendWelcomeEmail(email, displayName);
});
// Sends a welcome email to the given user.
async function sendWelcomeEmail(email, displayName) {
const mailOptions = {
from: `${APP_NAME} <noreply@firebase.com>`,
to: email,
};
// The user subscribed to the newsletter.
mailOptions.subject = `Welcome to ${APP_NAME}!`;
mailOptions.text = `Hey ${displayName || ''}! Welcome to ${APP_NAME}. I hope you will enjoy our service.`;
await mailTransport.sendMail(mailOptions);
return console.log('New welcome email sent to:', email);
}
If you are totally new to Cloud Functions for Firebase, it is probably a good idea to follow the tutorial here and to watch the official video series, here.
来源:https://stackoverflow.com/questions/53101368/how-to-get-an-email-when-new-key-is-created-in-firebase-real-time-database