Node.js 如何使用NodeEmailer和Firebase异步向多个用户发送邮件

Node.js 如何使用NodeEmailer和Firebase异步向多个用户发送邮件,node.js,firebase,google-cloud-functions,nodemailer,Node.js,Firebase,Google Cloud Functions,Nodemailer,我尝试了不同的循环函数从我的云数据库发送邮件。 下面的代码发送邮件但是 我无法发送包含特定于每个收件人的详细信息的邮件 我想循环我的数据库集合并异步发送邮件 在这种情况下,您可以从最近添加的文档中获取数据,该文档位于传递给onWrite调用的snapshot对象上 没有关于firestore结构和您获得的数据类型的更多详细信息,下面是一个可以帮助您开始构建异步电子邮件调用的代码片段: //google account credentials used to send email var tran

我尝试了不同的循环函数从我的云数据库发送邮件。 下面的代码发送邮件但是 我无法发送包含特定于每个收件人的详细信息的邮件


我想循环我的数据库集合并异步发送邮件 在这种情况下,您可以从最近添加的文档中获取数据,该文档位于传递给
onWrite
调用的
snapshot
对象上

没有关于firestore结构和您获得的数据类型的更多详细信息,下面是一个可以帮助您开始构建异步电子邮件调用的代码片段:

//google account credentials used to send email
var transporter = nodemailer.createTransport({
    host: "smtp.example.com",
    port: 587,
    secure: true,
    auth: {
        user: '***********@fastfood.com',
        pass: '********'
    }
});

exports.newsletters = functions.firestore.document('Puns/{orderId}').onWrite((snapshot, context)=> {

    var document = snapshot.data();

    //data to be added on the email body (could be anything)
    var data = document.body

    const mailOptions = {
        from: `cyrilogoh@gmail.com`,
        to: document.email,
        subject: `test`,
        //add whatever data you want here
        html: data
    };
    return transporter.sendMail(mailOptions, (error, data) => {
        if (error) {
            console.log(error)
            return
        }
        console.log("Sent!")
    });
})
您可以在document对象中获取特定于用户的数据,以检查哪个用户应该接收每封电子邮件,前提是该集合具有要在不同集合上搜索的用户ID的数据或引用


希望这能有所帮助。

谢谢,它确实对改造有所帮助。但我不熟悉http触发器,我的初衷是使用onwrite函数从另一个集合中触发新闻稿函数。。。。(是的,我知道,这是一个糟糕的做法),所以我想知道你是否愿意写一个云函数,而忽略数组,这是我的测试。感谢AGAINOk,我已经编辑了答案以使用
onWrite
触发器,它不会有很大变化,您只需要操作从函数中的快照对象获取的数据。如果这是您正在寻找的,请记住通过单击复选标记接受答案。