当我尝试从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 });
});
});
我的电子邮件和密码正确。
邮递员的错误是
{“消息”:{“代码”:“ EAUTH”,“命令”:“ API”}}
答案 0 :(得分:2)
我认为您应该更新代码并需要一个模块来发送:
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
我测试一下,为我工作
答案 1 :(得分:1)
1-使用Hotmail SMTP配置
var transporter = nodemailer.createTransport({
host: "smtp-mail.outlook.com", // hostname
secureConnection: false, // TLS requires secureConnection to be false
port: 587, // port for secure SMTP
tls: {
ciphers:'SSLv3'
},
auth: {
user: 'mymail@outlook.com',
pass: 'myPassword'
}
});
或使用内置服务
var transport = nodemailer.createTransport("SMTP", {
service: "hotmail",
auth: {
user: "user@hotmail.com",
pass: "password"
}
});
Ps。确保您的用户名和密码正确,并且Hotmail不会因安全问题阻止您的连接。
2-您可以使用服务gmail,但必须allow less secure connection to your Gmail