Отправка данных из базы данных в реальном времени с использованием функций Firebase на электронную почту - PullRequest
0 голосов
/ 07 февраля 2019

Как отправить определенные данные по электронной почте в Firebase Functions?Допустим, есть авторизованный пользователь и некоторые его данные (например, дата рождения), которые мы поместили в базу данных реального времени.Как, используя Firebase Functions, вы отправляете это поле на электронную почту после HTTP-запроса?

1 Ответ

0 голосов
/ 14 февраля 2019

Чтобы отправить электронное письмо через JS, вам необходимо подключить nodemailer

const functions = require('firebase-functions');
const nodemailer = require('nodemailer');

и создать транспорт:

let mailTransportAuth = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 587,
    secure: false,
    requireTLS: true,
    auth: {
        user: 'email',  /
        pass: 'password'
    }
});

Затем создайте функцию, которая будет контролироватьизменения (onUpdate) в базе данных реального времени и отправка писем:

exports.sendCodeOnEmail = functions.database.ref('/users/{userssId}/').onUpdate((snapshot, context) => {
    var newCode = generateCode()
    var key = Object.keys(snapshot.after.val())[0];

    const c = snapshot.after.child(key).toJSON().toString();
    const email = snapshot.after.child("email").exportVal();
    const code = snapshot.after.child("code").exportVal();

        snapshot.after.ref.update({'code': newCode});
        const mailOptions = {
            from: '"From me" <noreply@firebase.com>',
            to: email,
            text: "text"
        };
        mailOptions.subject = "Subject message";
        console.log(snapshot);

        try {
            mailTransportAuth.sendMail(mailOptions);
            console.log(`Email sent to:`, email);
        } catch (error) {
            console.error('There was an error while sending the email:', error);
        }

    console.log("Send code on email: " + email, " , code: " + code);

    return null;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...