在使用Nodemailer发送邮件之前,必须先两次调用云功能

时间:2019-06-05 12:10:55

标签: node.js firebase google-cloud-functions nodemailer

当我尝试调用我的云函数(该函数通过nodemailer发送邮件)时,我必须先调用它一次,然后它才能真正“激活”,然后才能正常工作,直到经过一段时间并且需要相同的过程为止。

在第一次通话中,我没有收到日志。

exports.sendEmail = functions.https.onRequest((req, res) => {
  console.log(req.body);

  transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
      return console.log(error);
    }
    console.log("Message sent: %s", info.messageId);
    console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));

    return res.sendStatus(200);
  });
});

1 个答案:

答案 0 :(得分:1)

一些方法来保证您的回答。

const sendMail = function(mailOptions, transporter) {
  return new Promise(function(resolve, reject) {
    transporter.sendMail(mailOptions, function(error, info) {
      if (error) {
        reject(error);
      } else {
        resolve(info);
      }
    });
  });
};

另一种方法是做类似的事情

return transporter.sendMail(mailOptions).then(function(response) {
  return res.sendStatus(200);
}).catch(function(error) {
  console.info(error);
})

我会把硬币放在上面。