Облачная функция должна вызываться дважды перед отправкой почты с помощью Nodemailer - PullRequest
0 голосов
/ 05 июня 2019

Когда я пытаюсь вызвать мою облачную функцию (которая отправляет почту с помощью 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 Ответ

1 голос
/ 05 июня 2019

Несколько способов обещать свой ответ.

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);
})

Я бы положил свои монеты на это.

...