我有以下节点代码:
var nodemailer = require("nodemailer");
var xoauth2 = require('xoauth2');
/*
Here we are configuring our SMTP Server details.
STMP is mail server which is responsible for sending and recieving email.
*/
var smtpTransport = nodemailer.createTransport({
service: "Gmail",
host: "smtp.gmail.com",
auth: {
XOAuth2: {
user: "buckscountytourofhonor@gmail.com",
pass: "****",
clientId:"myclientidenteredhere",
clientSecret:"mysecretenteredhere",
refreshToken:"mytokenenteredhere"
}
}
});
module.exports = function(app, passport){
app.get('/send',function(req,res){
var mailOptions={
to : 'buckscountytourofhonor@gmail.com',
from: req.query.email,
subject : req.query.subject,
text : req.query.name +": "+req.query.message
}
console.log(mailOptions);
smtpTransport.sendMail(mailOptions, function(error, response){
if(error){
console.log(error);
res.end("error");
}else{
console.log("Message sent: " + response.message);
res.end("sent");
}
});
});
我目前正在关注this教程。实际上跟着很多,但这是最简洁的。
我收到以下错误:
错误:登录无效:不接受535-5.7.8用户名和密码
任何人都可以帮我弄清楚我错过了什么,我花了3个多小时研究这个。
答案 0 :(得分:2)
我似乎刚刚面对这个问题。我有一个较旧的实现与xoauth工作正常,另一个应用程序具有相同的代码,但更新的nodemailer安装确实给了
登录无效:535-5.7.8不接受用户名和密码。
我是从xoauth2那样来的
var generator = require('xoauth2').createXOAuth2Generator({
user: 'xxx',
clientId: 'xxx',
clientSecret: 'xxx',
refreshToken: 'xxx'
});
和
var transporter = nodemailer.createTransport(({
service: 'gmail',
auth: {
xoauth2: generator
}
到
var transporter = nodemailer.createTransport(({
service: 'gmail',
auth: {
type: 'OAuth2',
user: 'xxx',
clientId: 'xxx',
clientSecret: 'xxx',
refreshToken: 'xxxx'
}
}));
这对我有用。不确定是否值得一试。我确实遵循了相同的Gmail设置教程,这在我之前的实施中确实有效,并且再次与新项目一起使用。