在 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个超时选项,如下:
- options.connectionTimeout等待多少毫秒
建立连接
- options.greetingTimeout建立连接后等待问候语的毫秒数
- options.socketTimeout允许多少毫秒不活动
但我不确定哪一个与这里相关以解决 callbackFn
从未被触发的问题。
我正在使用 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
从未被触发的问题。