Node.js NodeEmailer-如何处理未读错误

Node.js NodeEmailer-如何处理未读错误,node.js,error-handling,nodemailer,Node.js,Error Handling,Nodemailer,我有一个nodejs应用程序,它使用nodeEmailer插件发送电子邮件。这在99.99%的时间内有效,但昨天应用程序在PM2日志中出现以下错误而挂起 mod.mailer: Error: connect ENETUNREACH 2a00:1450:400c:c04::6c:465 - Local (:::0) 我没有找到很多关于这种错误的信息。完全有可能网络连接中出现了故障。下面是我为传输电子邮件而编写的模块的代码。我如何捕捉这种错误并确保应用程序不会挂断,而是重试发送电子邮件 var n

我有一个
nodejs
应用程序,它使用
nodeEmailer
插件发送电子邮件。这在99.99%的时间内有效,但昨天应用程序在
PM2
日志中出现以下错误而挂起

mod.mailer: Error: connect ENETUNREACH 2a00:1450:400c:c04::6c:465 - Local (:::0)
我没有找到很多关于这种错误的信息。完全有可能网络连接中出现了故障。下面是我为传输电子邮件而编写的模块的代码。我如何捕捉这种错误并确保应用程序不会挂断,而是重试发送电子邮件

var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport(process.env.TRANSPORT);

function mail(options) {
    transporter.sendMail({
        from: process.env.SUBDIRECTORY + '\@' + process.env.HOST + '\ \<geolytix@gmail.com\>',
        to: options.to,
        subject: options.subject,
        text: options.text
    }, function (err, info) {
        if (err) {
            console.log('mod.mailer: ' + err);
        }
        console.log('mod.mailer: ' + info.response);
    });
}

module.exports = {
    mail: mail
};
var nodemailer=require('nodemailer');
var transporter=nodemailer.createTransport(process.env.TRANSPORT);
功能邮件(选项){
发送邮件({
from:process.env.SUBDIRECTORY+'\@'+process.env.HOST+'\\',
to:options.to,
主题:options.subject,
text:options.text
},函数(错误,信息){
如果(错误){
console.log('mod.mailer:'+err);
}
log('mod.mailer:'+info.response);
});
}
module.exports={
邮寄:邮寄
};

该问题是出现网络问题时弹出的内部包捕获。 所以要解决这个问题,您还必须将代码放入try-catch块并递归调用您的函数

功能邮件(选项){
试一试{
发送邮件({
from:process.env.SUBDIRECTORY+'\@'+process.env.HOST+'\\',
to:options.to,
主题:options.subject,
text:options.text
},函数(错误,信息){
如果(错误){
console.log('mod.mailer:'+err);
}
log('mod.mailer:'+info.response);
});
}捕捉(错误){
控制台日志(err);
邮件(选项)
}
}