Reputation: 1005
I am trying to send email through nodemailer but is not able to send email and showing following error.
{ [Error: Invalid login]
code: 'EAUTH',
response: '534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbsTr\n534-5.7.14 2r0PE8hXz57GMK9aydA3GouUGQr1Pc2wBywEf6i09kKVOv9Qv5y9Csy_lL-PIgUO6ML8uA\n534-5.7.14 ZsEiEkpAU0N5aiQBZdI1urKo3XfCiiS2MhjiUZaBgpn88sFXR-sBeA5ydMc_Md1F5wDcbX\n534-5.7.14 7ynrcVC-h0H_-e_ptvGhA3ywiHOSoDZAxzrindvEMNkXmCilbo9J7ITdlXFKwQjITaIkei\n534-5.7.14 Tk8QMKEY22ldNjE78Lh2ekheLd5M> Please log in via your web browser and\n534-5.7.14 then try again.\n534-5.7.14 Learn more at\n534 5.7.14 https://support.google.com/mail/answer/78754 21sm9309692qgj.21 - gsmtp',
responseCode: 534 }
I am using exact code as shown in nodemailer documentation.
this is server side code which i am using.
var transporter = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: 'username',
pass: 'password'
}
});
app.post('/sendfeedbackmail', function(req, res) {
var mailOptions = {
from: 'Feedback<[email protected]>', // sender address
to: '[email protected]', // receiver
subject: 'Subject', // Subject line
text: mailData, // plaintext body
html: mailData // html body
};
// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info) {
if (error) {
console.log(error);
res.send({success:false});
}else{
res.send({
success: true
})
}
});
})
This was working fine few days ago and still working fine for other email client then gmail hence i think the issue may be related to any security setting of gmail account.
Upvotes: 8
Views: 10880
Reputation: 141
You may need to "Allow Less Secure Apps" in your gmail account (it's all the way at the bottom). You also may need to "Allow access to your Google account". See details about using Gmail here.
Above solution worked for me which I found on github. Here's the link.
Upvotes: 5
Reputation: 1
var transporter = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: 'username',
pass: 'password'
}
});
Instead of username = enter your valid email id and password = your password
again an alert shows to your Gmail from google like
(Google will continue to block sign-in attempts from the app you're using because it has known security problems or is out of date. You can continue to use this app by allowing access to less secure apps, but this may leave your account vulnerable. )
you need to allow the access from other mailer
then it generates the response
Upvotes: 0
Reputation: 14168
Check http://masashi-k.blogspot.com.br/2013/06/sending-mail-with-gmail-using-xoauth2.html to register your application.
You will need something like this to authenticate on Gmail:
var xoauth2 = require('xoauth2');
var nodemailer = require('nodemailer');
var smtp = require('nodemailer-smtp-transport');
var generator = xoauth2.createXOAuth2Generator({
user: '..',
clientId: '...',
clientSecret: '...',
refreshToken: '...',
accessToken: ''
});
generator.on('token', function(token){
console.info('new token', token.accessToken);
// maybe you want to store this token
});
var transporter_google = nodemailer.createTransport(smtp({
name: '...',
host: '...',
port: 587,
secure: false,
ignoreTLS: false,
tls: { rejectUnauthorized: true },
debug: false,
auth: { xoauth2: generator }
}));
See https://github.com/andris9/nodemailer-smtp-transport#authentication.
Upvotes: 7