我是Node js的新手,我尝试将示例消息发送到其他电子邮件,当我从linux在终端中运行文件时,出现此错误:
root@me:/home/memee/Desktop/test/NodeJS/mail# nano example.js
root@me:/home/memee/Desktop/test/NodeJS/mail# node example.js
{ Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials 77-v6sm41437784pga.40 - gsmtp
at SMTPConnection._formatError (/home/memee/Desktop/test/NodeJS/mail/node_modules/nodemailer/lib/smtp-connection/index.js:606:19)
at SMTPConnection._actionAUTHComplete (/home/memee/Desktop/test/NodeJS/mail/node_modules/nodemailer/lib/smtp-connection/index.js:1335:34)
at SMTPConnection._responseActions.push.str (/home/memee/Desktop/test/NodeJS/mail/node_modules/nodemailer/lib/smtp-connection/index.js:366:26)
at SMTPConnection._processResponse (/home/memee/Desktop/test/NodeJS/mail/node_modules/nodemailer/lib/smtp-connection/index.js:762:20)
at SMTPConnection._onData (/home/memee/Desktop/test/NodeJS/mail/node_modules/nodemailer/lib/smtp-connection/index.js:558:14)
at TLSSocket._socket.on.chunk (/home/memee/Desktop/test/NodeJS/mail/node_modules/nodemailer/lib/smtp-connection/index.js:510:47)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
code: 'EAUTH',
response: '535-5.7.8 Username and Password not accepted. Learn more at\n535 5.7.8 https://support.google.com/mail/?p=BadCredentials 77-v6sm41437784pga.40 - gsmtp',
responseCode: 535,
command: 'AUTH PLAIN' }
我知道我的错误是登录名,但是我的密码和电子邮件是正确的。
我的代码:
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'example@gmail.com',
pass: 'here I put my password'
}
});
var mailOptions = {
from: 'from@gmail.com',
to: 'to@gmail.com',
subject: 'Sending Email using Node.js',
text: 'That was easy!'
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
我的node和npm版本:
root@me:~# node --version
v8.11.3
root@me:~# npm --v
6.1.0
root@me:~#
我使用了本教程:tutorial
答案 0 :(得分:5)
我之前遇到过同样的问题,但是在从用户名中删除'@gmail.com'
后,对我来说效果很好。
错误'535-5.7.8 Username and Password not accepted'
仅在以下情况下发生:
@gmail.com
,请避免使用它!答案 1 :(得分:4)
在https://www.google.com/settings/security/lesssecureapps上启用“允许安全性较低的应用程序”
答案 2 :(得分:1)
您的电子邮件和密码不匹配,请查看错误消息:response: '535-5.7.8 Username and Password not accepted.
。
查看代码的这一部分:
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'example@gmail.com', // here use your real email
pass: 'here I put my password' // put your password correctly (not in this question please)
}
});
如果使用您的用户名和密码登录,则可以发送电子邮件。
答案 3 :(得分:1)
答案 4 :(得分:1)
从您的用户名中删除“ @ gmail.com”。
答案 5 :(得分:0)
这是完整的解决方案。干杯!!!
使用默认的SMTP传输创建可重用的传输器对象
transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
user: 'yourEmail', //Remove '@gmail.com' from your username.
pass: 'yourPassword'
}
});
打开“允许https://www.google.com/settings/security/lesssecureapps的安全性较低的应用程序”
允许不太安全的应用访问:https://myaccount.google.com/lesssecureapps
完成!
如果有人面临以下问题
(firebase functions) Error: Forbidden Your client does not have permission to get URL /
解决方案是:
npm install -g firebase-tools
答案 6 :(得分:0)
步骤 1 但是,您需要允许来自您的 google 帐户的安全性较低的应用发送电子邮件。 Through this link。允许来自您的 Google 帐户的安全性较低的应用
阅读以下说明 Enable imap
在 IMAP 访问部分启用 IMAP 的短网址 GO TO URL
const nodemailer = require("nodemailer");
let transporter = nodemailer.createTransport({
host: "smtp.gmail.com",
port: 587,
secure: false, // true for 465, false for other ports
type:"oauth2",
auth: {
user: "myusernmae@gmail.com", // generated ethereal user
pass: "Mypassword", // generated ethereal password
}});
transporter.verify(async function(error, success) {
if (error) {
console.log(error);
} else {
let info = await transporter.sendMail({
from: '"Fred Foo ?" <foo@example.com>', // sender address
to: "manoj@gmail.com, baz@example.com", // list of receivers
subject: "Hello ✔", // Subject line
text: "Hello world?", // plain text body
html: "<b>Hello world?</b>", // html body
});
console.log(info);
console.log("Server is ready to take our messages");
}});
工作示例
答案 7 :(得分:0)
我尝试了这个并为我工作:
#1 创建谷歌应用密码 https://support.google.com/accounts/answer/185833
#2 使用:
host: "smtp.gmail.com",
port: 587,
auth: {
user: "Your username here e.g:abc@gmail.com",
pass: "Your password here"
}