Express 控制台中未定义
我尝试为nodemailer创建单独的函数,并期望返回布尔值true或false。但当邮件发送给用户时,我会在帐户中获取邮件,但在此之后,返回的值不是true或false,而是未定义的值Express 控制台中未定义,express,nodemailer,Express,Nodemailer,我尝试为nodemailer创建单独的函数,并期望返回布尔值true或false。但当邮件发送给用户时,我会在帐户中获取邮件,但在此之后,返回的值不是true或false,而是未定义的值 function nodeMailer(mailOptions){ var transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: get.username,
function nodeMailer(mailOptions){
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: get.username,
pass: get.password
},
tls: {
rejectUnauthorized : false
}
});
transporter.sendMail(mailOptions, (error, info) => {
if(error) return false;
return true;
});
}
您正处于未定义状态,因为
true
或false
应返回您的nodeMailer
函数,而不是transporter.sendMail
。
在这种情况下,您可以创建Promise
,它可以帮助您实现这一点
var nodeMailer = function(mailOptions) {
return new Promise(function(resolve, reject){
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: get.username,
pass: get.password
},
tls: {
rejectUnauthorized : false
}
});
transporter.sendMail(mailOptions, (error, info) => {
if(error) reject(error);
resolve(info);
});
}
});
}
然后像下面这样兑现你的承诺
nodeMailer(yourOptions).then(function(result) {
// handle success result here
return info;
})
.catch(function(err) {
// handle your error here
})
更多关于你可以阅读的承诺。当您需要控制异步流时,它们非常有用。您没有定义,因为
true
或false
应该返回您的nodeMailer
函数,而不是transporter.sendMail
。
在这种情况下,您可以创建Promise
,它可以帮助您实现这一点
var nodeMailer = function(mailOptions) {
return new Promise(function(resolve, reject){
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: get.username,
pass: get.password
},
tls: {
rejectUnauthorized : false
}
});
transporter.sendMail(mailOptions, (error, info) => {
if(error) reject(error);
resolve(info);
});
}
});
}
然后像下面这样兑现你的承诺
nodeMailer(yourOptions).then(function(result) {
// handle success result here
return info;
})
.catch(function(err) {
// handle your error here
})
更多关于你可以阅读的承诺。当您需要控制异步流时,它们非常有用。使用回调或承诺尝试此操作。使用回调或承诺尝试此操作。我建议在出现错误时使用
拒绝,在工作正常时解决信息。Welcom,要获得更漂亮的代码,您可以查看ES7的async/Wait,不带transpilers的v8已经支持这一点,如果出现错误,我建议使用reject
,如果可以解决info
。Welcom,要获得更漂亮的代码,您可以查看ES7的async/Wait,它已经由不带transpilers的v8支持,您可以在这里准备更多