我已经部署了firebase云功能来在用户首次登录时发送欢迎邮件。 在firebase控制台的firebase云功能日志消息中,调用该函数时看到了此错误消息。
错误消息:
未配置结算帐户。无法访问外部网络,并且配额受到严格限制。配置结算帐户以消除这些限制
使用Firebase云功能无法免费发送电子邮件吗?如果可能,请说明操作步骤。 (可能带有示例代码)
编辑1:
1.我目前正在使用nodemailer发送邮件。
2.我正在使用Gmail作为邮件服务。
答案 0 :(得分:0)
Does sending mail via nodemailer in firebase cloud functions require billing account?
不,您不需要计费帐户即可使用云功能通过nodmailer发送电子邮件。
在我的云功能中,我收到了与您一样的帐单错误。我已经完成了2个简单的步骤,但它消失了。
1。。在您的Gmail帐户设置中,启用Less secure app access使其打开
2。。也请转到此链接,然后单击继续https://accounts.google.com/DisplayUnlockCaptcha。
完成上述两个步骤后,帐单错误消失了,并且从云功能成功发送了电子邮件。
这是我供参考的nodejs代码:
const functions = require('firebase-functions');
const nodemailer = require('nodemailer');
const mailTransport = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'xyzz@gmail.com',
pass: '123'
},
});
exports.sendMail = functions.https.onRequest(async (req, res) => {
const mailOptions = {
from: '"Test." <noreply@firebase.com>',
to: 'xyz@gmail.com'
};
// Building Email message.
mailOptions.subject = 'Thanks and Welcome!'
mailOptions.text = 'Thanks you for subscribing to our newsletter. You will receive our next weekly newsletter.'
try {
await mailTransport.sendMail(mailOptions);
console.log('subscription confirmation email sent to');
return res.send('Sended');
} catch (error) {
console.error('There was an error while sending the email:', error);
return res.send(error.toString());
}
});
您可以在部署前在本地进行测试
firebase serve --only functions
您将获得一个链接http:// localhost:5000 / project-name / us-central1 / sendMail;将其粘贴到浏览器中,云功能将运行。如果有任何错误,它将显示在浏览器和控制台/ powershell中