当我的web应用程序中创建了一个新的用户帐户时,我试图给自己发送一封电子邮件。下面是我正在部署到Firebase Functions的当前代码:
const functions = require("firebase-functions");
const admin = require("firebase-admin");
const nodemailer = require("nodemailer");
admin.initializeApp();
require("dotenv").config();
const {
SENDER_EMAIL,
SENDER_PASSWORD
} = process.env;
exports.sendEmailNotification = functions.firestore.document("users/{userId}").onCreate(async (snapshot, context) => {
const data = snapshot.data();
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: "smtp.gmail.com",
port: 465,
secure: true,
auth: {
user: SENDER_EMAIL,
pass: SENDER_PASSWORD,
},
});
// send mail with defined transport object
let info = await transporter.sendMail({
from: `"MY_APP_NAME" <${SENDER_EMAIL}>`,
to: "MY_PERSONAL_GMAIL_ACCOUNT",
subject: `A New User Has Joined MY_APP_NAME!`,
text: `A new user has joined MY_APP_NAME. Name: ${data.name}, email: ${data.email}`
});
})
在我的机器上使用node index.js
命令运行类似的版本没有问题。问题似乎是当它在Firebase函数上运行时。
2条答案
按热度按时间1tuwyuhd1#
根据您当前的代码,它似乎工作正常,正如您所说的,它只在使用node.js的机器上工作正常。要获得相同的结果,可能要遵循的指南是作为Node.js模块的Nodemailer。
现在,如果您想使用Firebase的Cloud Functions来完成此操作,我强烈建议您遵循Send Email Using Firebase Functions & Nodemailer指南。
Send Email with Firebase functions and Nodemailer的附加指南。
olhwl3o22#
对我来说,它失败了,因为它没有导入nodemailer,因为我没有在实际的函数文件夹中安装它。
如果您正在安装nodemailer或任何软件包,请确保您正在安装它在实际的功能文件夹。
如果您检查package.json并看到依赖项中包含nodemailer,则可以确认是否安装了该程序。