在 NodeMailer 中处理超时

Handle timeout in NodeMailer

我正在使用 nodemailer (v1.0.4) 在我的 Node 应用程序中发送电子邮件。这是代码:

smtpUtil.js

var nodemailer = require("nodemailer");
var config = require("../config").mailgun;

var transporter = nodemailer.createTransport({
  service: 'Mailgun',
  auth: {
    user: config.username,
    pass: config.password
  },
});

transporter.mailSent = function(mailOptions, callback) {
  transporter.sendMail(mailOptions, function(error, response) {
    if (error) {
      console.log("Error in sending mail", error);
      callback(new Error(error));
    } else {
      console.log("Email sent successfully");
      callback();
    }
  });
}

module.exports = transporter;

我只是将此 smtpUtil.js 包含在其他文件中,然后调用 transporter.mailSent(mailOpts, callbackFn); 发送电子邮件。

我的问题是:如何添加最大超时时间并优雅地处理进程中的超时时间?

我问上面配置的原因是最近在代码中,我调用了transporter.mailSent(mailOpts, callbackFn)。但由于某种原因(可能无限超时),callbackFn 从未被触发(既不成功也不失败)。

最新的NodeMailer module虽然给出了3个超时选项,如下:

但我不确定哪一个与这里相关以解决 callbackFn 从未被触发的问题。

我通过添加最大 TTL 来处理电子邮件发送部分解决了这个问题。

自从我使用 kue, it was rather easy to configure a max TTL