与Firebase函数一起使用时,Nodemailer不工作

yptwkmov  于 2022-11-30  发布在  其他
关注(0)|答案(2)|浏览(133)

当我的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函数上运行时。

1tuwyuhd

1tuwyuhd1#

根据您当前的代码,它似乎工作正常,正如您所说的,它只在使用node.js的机器上工作正常。要获得相同的结果,可能要遵循的指南是作为Node.js模块的Nodemailer。
现在,如果您想使用Firebase的Cloud Functions来完成此操作,我强烈建议您遵循Send Email Using Firebase Functions & Nodemailer指南。
Send Email with Firebase functions and Nodemailer的附加指南。

olhwl3o2

olhwl3o22#

对我来说,它失败了,因为它没有导入nodemailer,因为我没有在实际的函数文件夹中安装它。
如果您正在安装nodemailer或任何软件包,请确保您正在安装它在实际的功能文件夹。
如果您检查package.json并看到依赖项中包含nodemailer,则可以确认是否安装了该程序。

相关问题