firebase - 在 React Native 中使用 Firebase Cloud Functions 发送电子邮件
问题描述
我想使用 Firebase Cloud Functions 在我的 React Native 中发送电子邮件。用户应该能够发送电子邮件以在应用程序中报告问题/反馈。我在我的本机应用程序中创建了一个文本输入和一个按钮。用户应该能够在文本输入框中指定他们的问题/反馈,当他们按下按钮时,我将在我的 gmail 或 hotmail 帐户中以电子邮件的形式收到他们的回复。我可以在 Firebase Cloud Functions 中使用 onCreate 来实现这一点吗?如果是这样,我该如何实现?onCreate 方法和 react native 中的按钮功能会是什么样子?我对本机和火力云功能做出反应非常新。不幸的是,我还没有看到任何关于此的链接。
谢谢你。
请看下面:
const nodemailer = require('nodemailer');
const email = functions.config().email_credentials.email;
const password = functions.config().email_credentials.password;
const mailTransport = nodemailer.createTransport(`smtps://${email}:${password}@smtp.gmail.com`);
functions.database.ref('/feedbacks/{currentId}').onCreate((snapshot, context) => {
const feedback = snapshot.val().feedback;
const name = snapshot.val().name;
const mailOptions = {
from: snapshot.val().email,
replyTo: snapshot.val().email,
to: functions.config().email_credentials.email,
subject: `Feedback from `+name,
html: feedback,
};
try {
mailTransport.sendMail(mailOptions);
} catch(error) {
console.log(error);
}
return null;
});
实时数据库:
解决方案
您的云功能可能如下所示:
import * as functions from "firebase-functions";
import admin from "firebase-admin";
import nodemailer from "nodemailer";
const { email, password } = functions.config().gmail;
const mailTransport = nodemailer.createTransport(
`smtps://${email}:${password}@smtp.gmail.com`
);
export default functions.database
.ref("/feedbacks/{uid}")
.onCreate(async (eventSnapshot, context) => {
const data = eventSnapshot.val();
const { feedback } = data;
const mailOptions = {
from: functions.config().email_credentials.email,
replyTo: functions.config().email_credentials.email,
to: snapshot.val().email,
subject: `Feedback from `+name,
html: feedback,
};
await mailTransport.sendMail(mailOptions);
return null;
});
确保将您的电子邮件凭据保存在 firebase 云函数配置下,而不是代码中。如果你把它放在代码中的任何地方,它可能会在一段时间内被某人阅读。这是非常重要的。
在您的 Gmail 中确保启用“Unsercure 应用程序”。更多关于它的信息。
现在,如果有人将一些数据添加到路径feeds
和电子邮件将被发送。
不要忘记使用配置来部署您的功能。
推荐阅读
- c++ - 如何结交本地班级的功能朋友?
- python - 如何从 .vcf 文件中删除错误的制表符/新行?
- scala - Scala中的递归排序,包括退出条件
- android - 按下按钮时如何继续添加?
- javascript - onclick 我想获取 tr 元素,但它给了我 td 元素
- regex - 如何在多个捕获组中使用前瞻和后瞻
- sql - 生成租金列表,其中包含租金最多的店铺的客户信息
- r - 如何在 R 中自己在 ggplot 中编写显着性水平?
- elasticsearch - SonarQube:嵌入式弹性搜索配置位置
- javascript - 如何使用 javascript 或 java 获取当前 url 用户在 .jsp 文件中