处理NodeMailer中的超时

时间:2018-01-08 18:09:19

标签: node.js 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个超时选项,如下所示:

  • options.connectionTimeout 等待多少毫秒 连接建立
  • options.greetingTimeout 建立连接后等待问候语的时间是多少毫秒
  • options.socketTimeout 允许多少毫秒的不活动

但我不确定哪一个与此相关,以解决callbackFn永远不会被触发的问题。

1 个答案:

答案 0 :(得分:0)

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

由于我使用的是kue,因此配置最大TTL非常容易。