如何异步使用 Nodemailer 和 Firebase 向多个用户发送邮件
How to send mail to multiple user using Nodemailer And Firebase asynchronously
我尝试了不同的循环功能来从我的云数据库发送邮件。
下面的代码发送邮件 but
我无法发送包含每个收件人特定详细信息的邮件
我想遍历我的数据库集合并异步发送邮件。
const functions = require('firebase-functions');
const nodemailer = require('nodemailer');
////we would use receipt for the testing of the loop
//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((snap, context)=> {
var Emails = ['Cyrilogoh@gmail.com', 'mariajame34@gmail.com','therealogoh@gmail.com','faraway@gmail.com']
const mailOptions = {
from: `cyrilogoh@gmail.com`,
to: Emails,
subject: `test`,
html: `<h1>test</h1>
<p>
Array Works
</p>`
};
return transporter.sendMail(mailOptions, (error, data) => {
if (error) {
console.log(error)
return
}
console.log("Sent!")
});
});```
在这种情况下,您可以从最近添加的文档中获取有关传递给您的 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!")
});
})
您可以在文档对象中获取特定于用户的数据,以检查哪个用户应该收到每封电子邮件,前提是该集合具有该数据或对要在不同集合中搜索的 userId 的引用。
希望这对您有所帮助。
我尝试了不同的循环功能来从我的云数据库发送邮件。 下面的代码发送邮件 but 我无法发送包含每个收件人特定详细信息的邮件
我想遍历我的数据库集合并异步发送邮件。
const functions = require('firebase-functions');
const nodemailer = require('nodemailer');
////we would use receipt for the testing of the loop
//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((snap, context)=> {
var Emails = ['Cyrilogoh@gmail.com', 'mariajame34@gmail.com','therealogoh@gmail.com','faraway@gmail.com']
const mailOptions = {
from: `cyrilogoh@gmail.com`,
to: Emails,
subject: `test`,
html: `<h1>test</h1>
<p>
Array Works
</p>`
};
return transporter.sendMail(mailOptions, (error, data) => {
if (error) {
console.log(error)
return
}
console.log("Sent!")
});
});```
在这种情况下,您可以从最近添加的文档中获取有关传递给您的 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!")
});
})
您可以在文档对象中获取特定于用户的数据,以检查哪个用户应该收到每封电子邮件,前提是该集合具有该数据或对要在不同集合中搜索的 userId 的引用。
希望这对您有所帮助。