当我尝试从nodemailer发送电子邮件时,出现错误:EAUTH API
我从文档中了解到,我尝试将Hotmail和Gmail都用作我的服务,如果Gmail不起作用,请不要使用它。但是,这似乎不是问题。
我想使用此电子邮件在我的应用程序中启用忘记密码
代码:
var smtpTransport = nodemailer.createTransport({
service: 'Hotmail',
auth: {
user: email,
pass: pass
}
});
router.post('/forgotpassword', function(req, res){
async.waterfall([
function(done) {
User.findOne({
email: req.body.email
}).exec(function(err, user) {
if (user) {
done(err, user);
} else {
done('User not found.');
}
});
},
function(user, done) {
// create the random token
crypto.randomBytes(20, function(err, buffer) {
var token = buffer.toString('hex');
done(err, user, token);
});
},
function(user, token, done) {
User.findByIdAndUpdate({ _id: user._id }, { reset_password_token: token, reset_password_expires: Date.now() + 86400000 }, { upsert: true, new: true }).exec(function(err, new_user) {
done(err, token, new_user);
});
},
function(token, user, done) {
var data = {
to: user,
from: email,
template: 'forgot-password-email',
subject: 'Password help has arrived!',
context: {
url: 'http://localhost:3000/user/reset_password?token=' + token,
name: req.body.email
}
};
smtpTransport.sendMail(data, function(err) {
if (!err) {
return res.json({ message: 'Kindly check your email for further instructions' });
} else {
return done(err);
}
});
}
], function(err) {
return res.status(422).json({ message: err });
});
});
我的电子邮件和密码正确。
postman 的错误是
最佳答案
我认为您应该更新您的代码,并需要一个模块进行发送:
var nodemailer = require('nodemailer');
var smtpTransport = require('nodemailer-smtp-transport');
var smtpTransport = nodemailer.createTransport(smtpTransport({
service: 'Hotmail',
auth: {
user: email,
pass: pass
}
}));
为了安全起见,在登录新设备或应用程序时,Google可能会要求您完成一个称为“解锁验证码”的附加步骤。
您可能需要手动允许访问您的Google帐户。
使用浏览器登录到您的Google帐户,然后访问以下链接对其进行解锁:click here
单击“允许”按钮后,您应该看到以下消息:
已启用帐户访问权限。请尝试从您的新设备或应用程序再次登录到您的Google帐户。
并允许不太安全的应用访问:less secure apps
我测试一下,为我工作