如何通过Promise(Bluebird)使用NodeMailer(不是SMTP)发送邮件?

问题描述 投票:0回答:1

如何使用nodemailer + bluebird(Promise)发送邮件。我已成功发送到电子邮件,但是没有响应(在该页面中它仍在加载并且没有响应,但它成功发送到了电子邮件)。

这是文件js:

    return new Promise(resolve => {
    var transporter = nodemailer.createTransport({
        sendmail: true,
        newline: "windows",
        logger: false
      }),
      message = {
        from: "[email protected]",
        to: variabletoemail,
        subject: variablesubject,
        html: variablesendhtml
      };
    transporter.sendMail(message, (error, response) => {
      if (error) {
        resolve("0"); //can't call
      } else {
        resolve("1"); //can't call
      }
    });
  });

有人知道以上我的问题吗?请帮助我

javascript express promise bluebird nodemailer
1个回答
0
投票

基于文档,发送邮件返回承诺,您不能将其与回调传递一起使用。您可以将其与await一起使用,并使用try catch来解决或拒绝您的承诺。

return new Promise(async (resolve, reject) => {
    var transporter = nodemailer.createTransport({
        sendmail: true,
        newline: "windows",
        logger: false
      }),
      message = {
        from: "[email protected]",
        to: variabletoemail,
        subject: variablesubject,
        html: variablesendhtml
      };
    try{
      await transporter.sendMail(message);
      resolve("1")
    }catch(e){
      reject(e)
    }
  });

或不带try catch

return new Promise((resolve, reject) => {
        var transporter = nodemailer.createTransport({
            sendmail: true,
            newline: "windows",
            logger: false
          }),
          message = {
            from: "[email protected]",
            to: variabletoemail,
            subject: variablesubject,
            html: variablesendhtml
          };
          transporter.sendMail(message).then(()=>{
           resolve("1")
          }).catch((e) => {
           reject(e)
          });
      });
© www.soinside.com 2019 - 2024. All rights reserved.