我尝试为nodemailer创建单独的函数并期望返回boolean true或false。但是当邮件发送给用户时我收到了帐户中的邮件但是之后而不是true或false作为回报我&# 39; m得到未定义的值。
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;
});
}
答案 0 :(得分:2)
您未定义,因为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
})
有关承诺的更多信息,请阅读here。当您需要控制异步流时,它们非常有用。
答案 1 :(得分:0)
使用回调或承诺尝试此操作。