创建 Firestore 文档后无法发送电子邮件。创建 firestore 上的文档后,我正在尝试向 webapp 管理员的电子邮件发送通知电子邮件。但是面临以下问题。索引.jsconst functions = require('firebase-functions');const admin = require("firebase-admin")const nodemailer = require('nodemailer');admin.initializeApp()//google account credentials used to send emailvar transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 465, secure: true, auth: { user: '*****@gmail.com', pass: '******' }});exports.sendEmail = functions.firestore .document('stories/{sId}') .onCreate((snap, context) => { const mailOptions = { from: `*******@gmail.com`, to: snap.data().email, subject: 'contact form message', html: `<h1>Order Confirmation</h1> <p> <b>Email: </b>${snap.data().email}<br> </p>` }; return transporter.sendMail(mailOptions, (error, data) => { if (error) { return res.send(error.toString()); } var data = JSON.stringify(data) return res.send(`Sent! ${data}`); }); }); Firebase 函数日志*未配置发送电子邮件计费帐户。外部网络无法访问且配额受到严格限制。配置计费帐户以删除这些限制sendEmail 函数返回未定义的、预期的 Promise 或值*我假设忽略日志中的计费消息是安全的,因为计费计划不是强制性的?任何帮助将非常感激。
1 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
错误消息告诉您,您的代码返回了所需的承诺或值以外的内容。问题在于您使用transporter.sendMail()
. 根据nodemailer 文档,如果你不传递回调方法(你正在sendMail
做的),只会返回一个承诺,否则它会返回未定义。所以你的函数返回未定义。
你应该做什么而不是删除回调参数,而是处理返回的承诺的结果。您还可以从函数返回承诺。
return transporter.sendMail(mailOptions)
.then(data => {
// decide what you want to do on success
})
.catch(err => {
// decide what you want to do on failure
});
添加回答
举报
0/150
提交
取消