【问题标题】:How to Sendmail Using NodeMailer (Not SMTP) With Promise (Bluebird)?如何使用 NodeMailer(不是 SMTP)和 Promise(Bluebird)发送邮件?
【发布时间】:2020-03-14 22:24:11
【问题描述】:

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

这是文件 js:

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

有谁知道我上面的问题。请帮帮我

【问题讨论】:

  • 根据 documentation transporter.sendMail 返回一个 Promise,并且不带回调函数 - 所以你不需要 new promise 只需返回 @987654325 @
  • 请编写调用此代码的代码
  • @RaminRezazadeh - 那有什么可能的用途?问题是 OP 没有正确使用 nodemailer

标签: javascript express promise bluebird nodemailer


【解决方案1】:

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

return new Promise(async (resolve, reject) => {
    var transporter = nodemailer.createTransport({
        sendmail: true,
        newline: "windows",
        logger: false
      }),
      message = {
        from: "noreply@from.com",
        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: "noreply@from.com",
            to: variabletoemail,
            subject: variablesubject,
            html: variablesendhtml
          };
          transporter.sendMail(message).then(()=>{
           resolve("1")
          }).catch((e) => {
           reject(e)
          });
      });

【讨论】:

  • 嘿,谢谢,我尝试使用try catch,它成功了。
猜你喜欢
  • 2021-12-28
  • 2019-09-30
  • 2019-02-09
  • 2017-06-23
  • 2022-10-14
  • 2017-12-06
  • 2019-10-06
  • 2015-03-26
  • 1970-01-01
相关资源
最近更新 更多