我已经编写了一个发送电子邮件的节点js模块。该模块是nodemailer模块的包装器。当transporter.sendmail的回调被执行时,如果电子邮件被发送,我希望我的包装器函数返回true,否则返回false。我怎么能这么做?代码如下:
var nodemailer = require('nodemailer');
module.exports.sendEmail = function (mailerAddress, mailerPassword, to, subject, html) {
var transporter, mailOptions;
transporter = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: mailerAddress,
pass: mailerPassword
}
});
mailOptions = {
from: mailerAddress,
to: to,
subject: subject,
html: html
};
transporter.sendMail(mailOptions, function(error, info) {
if (error) {
return false;
}
else {
return true;
}
});
};
如果我理解的话,你所说的“包装函数”就是回调函数,所以如果我是正确的,试着做这样的事情:
var EmailUtil = {
sendEmail : function sendEmail(mailerAddress, mailerPassword, to, subject, html, callback) {
var options = {
service: 'Gmail',
auth: {
user: mailerAddress,
pass: mailerPassword
}
};
var transport = nodemailer.createTransport(options);
transport.sendMail({
from: mailerAddress,
to: to,
subject: subject,
html: html
}, function(err, responseStatus) {
var val;
if (error) {
val = false;
} else {
val = true;
}
callback(error, val);
});
}
};
module.exports = EmailUtil;
这是我在生产中使用的一个真实的例子。