在Firebase云功能中通过nodemailer发送邮件是否需要计费帐户?

时间:2018-07-31 14:10:12

标签: google-cloud-functions nodemailer

我已经部署了firebase云功能来在用户首次登录时发送欢迎邮件。 在firebase控制台的firebase云功能日志消息中,调用该函数时看到了此错误消息。

错误消息:

  

未配置结算帐户。无法访问外部网络,并且配额受到严格限制。配置结算帐户以消除这些限制

使用Firebase云功能无法免费发送电子邮件吗?如果可能,请说明操作步骤。 (可能带有示例代码)

编辑1:
1.我目前正在使用nodemailer发送邮件。
2.我正在使用Gmail作为邮件服务。

1 个答案:

答案 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中