maudev
maudev

Reputation: 1101

Send confirmation response after Nodemailer sendMail function done?

I need to return some response when I send a email through Nodemailer and I have this function:

async function dispatchEmail(email) {
  const transporter = nodemailer.createTransport({
    service: `${nconf.get('EMAIL_SMTP_SERVICE')}`,
    auth: {
      user: nconf.get('EMAIL_ACCOUNT'),
      pass: nconf.get('EMAIL_PASSWORD'),
    },
  });
  const mailOptions = {
    from: `"Shagrat Team "${nconf.get('EMAIL_ACCOUNT')}`,
    to: email,
    subject: 'Hi from Shagrat Team !',
    text: '',
    html: '',
  };
  const success = await transporter.sendMail(mailOptions, async (error, sent) => {
    if (error) {
      return error;
    }
    return {some_response};
  });
  return success;
}

Where I need to send{some_response} with some value either true, false or something else, but I got 'undefined' value inside the same function or calling it externally:

const success = await dispatchEmail(emailConsumed);

What value can I return and catch it? because I need to test this function.

Upvotes: 0

Views: 2402

Answers (1)

Chance
Chance

Reputation: 1654

An exit is to return the transporter.sendmail () itself, which is a promise, in the return contera the data of the sending or the error, it is good to use a trycatch for other errors.

async function dispatchEmail(email) {

      const transporter = nodemailer.createTransport({
        service: `${nconf.get('EMAIL_SMTP_SERVICE')}`,
        auth: {
          user: nconf.get('EMAIL_ACCOUNT'),
          pass: nconf.get('EMAIL_PASSWORD'),
        },
      });
      const mailOptions = {
        from: `"Shagrat Team "${nconf.get('EMAIL_ACCOUNT')}`,
        to: email,
        subject: 'Hi from Shagrat Team !',
        text: '',
        html: '',
      };
      return transporter.sendMail(mailOptions)
}

Another option is to use the nodemailer-promise module.

const success = await dispatchEmail(emailConsumed);

Result:

console.log(sucess);
{ envelope:
{ from: '[email protected]',
  to: [ '[email protected]' ] },
  messageId:'01000167a4caf346-4ca62618-468f-4595-a117-8a3560703911' }

Upvotes: 1

Related Questions