# #firebase #flutter
Вопрос:
Я изучаю flutter /firebase и пытаюсь изучить функциональность, с помощью которой я могу получить электронное письмо по новому документу, созданному в определенной коллекции. Возможно ли это в flutter или firebase?
Ответ №1:
Да, вы можете использовать триггеры Cloud Firestore. Эти триггеры легко настроить с помощью облачных функций
Приведенный ниже код представляет собой функцию, которая запускается при создании нового документа в примере коллекции Users
. После запуска мы можем извлечь имя пользователя и адрес электронной почты (которые получены из запроса на создание нового пользователя) и использовать Nodemailer для отправки пользовательского электронного письма.
{your_email}
и {your_password}
представляйте учетную запись электронной почты, которая отправляет это электронное письмо.
const functions = require('firebase-functions');
import * as nodemailer from 'nodemailer';
const transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true,
priority: 'high',
auth: {
user: '{your_email}',
pass: '{your_password}',
},
});
export const onCreateUserTrigger = functions.firestore
.document('Users/{userId}')
.onWrite((snap, context) => {
const userEmail = snap.data().email;
// this is the email we send to but you can make this any email:
// userEmail = 'admin@gmail.com';
const userName = snap.data().name;
const userId = context.params.userId;
// send a mail
const htmlText = `<p>Hello ${userName}, </p>
<p> This is a notification about... </p>
`;
const mailOptions = {
from: "{your_name} <{your_email}>",
to: userEmail,
subject: "Notification",
html: htmlText,
};
await transporter.sendMail(mailOptions);
});
Если вам нужна функция, которая запускается при любой записи (создании и редактировании) в Users
коллекцию, вы можете изменить функцию firestore на onWrite
:
export const onWriteUserTrigger = functions.firestore
.document('Users/{userId}')
.onWrite((snap, context) => {
// send email
});