这是我的settingController:
var sendSmtpMail = function (req,res) {
var transport = nodemailer.createTransport({
service:'gmail',
auth: {
user: "asdfqweerrccb@limitlesscircle.com",
pass: "qwerr@wee"
}
});
var mailOptions = {
from: "transactions@limitlesscircle.com",
to:'umaraja1124@gmail.com',
subject: req.body.subject+"nodejs working ?",
text: "Hello world ?",
}
transport.sendMail(mailOptions, function(error, response){
if(error){
res.send("Email could not sent due to error: "+error);
console.log('Error');
}else{
res.send("Email has been sent successfully");
console.log('mail sent');
}
});
在邮递员中我得到了这样的错误:
由于错误而无法发送电子邮件:
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 g7sm64435626pfj.29 - gsmtp
答案 0 :(得分:15)
我认为首先您需要在Google帐户中进行Allow less secure apps to access account设置 - 默认情况下,此设置为关闭,您只需将其设置为。
然后,我使用以下脚本从 gmail 帐户发送电子邮件,同时使用 yahoo 和 hotmail 帐户进行测试。
const nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 587,
secure: false,
requireTLS: true,
auth: {
user: 'your.gmail.account@gmail.com',
pass: 'your.password'
}
});
let mailOptions = {
from: 'your.gmail.account@gmail.com',
to: 'receivers.email@domain.com',
subject: 'Test',
text: 'Hello World!'
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error.message);
}
console.log('success');
});
如果您将前面的代码放在 send-email.js 中,请打开终端并写信:
node send-email
如果电子邮件发送成功或nodemailer
不要忘记先进行设置 - Allow less secure apps to access account。
我希望这段代码对您有用。祝你好运!
答案 1 :(得分:7)
如果您在自己的Google帐户中启用了双因素身份验证,则无法使用常规密码以编程方式访问Gmail。您需要生成应用专用密码,并使用该密码代替您的实际密码。
步骤:
您的脚本现在看起来像这样:
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'YOUR-GMAIL-USERNAME@gmail.com',
pass: 'YOUR-GENERATED-APP-PASSWORD'
}
});
我希望这有助于某人。
答案 2 :(得分:3)
我遇到了同样的问题,我如下解决了该问题:
您尚未完成,请转到以下链接: https://myaccount.google.com/u/1/lesssecureapps
现在您将看到开关。启用它,然后尝试它肯定会起作用。
和平:)
答案 3 :(得分:3)
https://myaccount.google.com/lesssecureapps(如果已关闭),请将其打开以启用lesssecureapps。 (我遇到了同样的问题,请立即打开以解决我的问题)
答案 4 :(得分:1)
您必须允许“不安全应用”访问您Google帐户中的帐户设置-默认情况下,此设置为关闭状态,您只需打开即可。 Image example
答案 5 :(得分:0)
您正在使用Gmail服务,因此您的邮件必须位于Gmail:
var transport = nodemailer.createTransport({
service:'gmail',
auth: {
user: "asdfqweerrccb@gmail.com",
pass: "qwerr@wee"
}
});
var mailOptions = {
from: "transactions@gmail.com",
to:'umaraja1124@gmail.com',
subject: req.body.subject+"nodejs working ?",
text: "Hello world ?",
}
transport.sendMail(mailOptions, function(error, response){
if(error){
res.send("Email could not sent due to error: "+error);
console.log('Error');
}else{
res.send("Email has been sent successfully");
console.log('mail sent');
}
});
答案 6 :(得分:0)
请确保您使用的端口正确:即port: 587
。
访问此链接以允许不太安全的应用访问:https://myaccount.google.com/lesssecureapps
在以下链接上启用重新拼写:https://accounts.google.com/b/0/DisplayUnlockCaptcha
等待几分钟,然后尝试发送电子邮件。
或者使用sendgrid。它有一个免费版本。
如果收件箱中没有看到电子邮件,请检查“垃圾邮件”文件夹。
答案 7 :(得分:0)
使用SMTP通过它进行发送需要一些帐户设置。
如果您在帐户上启用了两步验证,则需要在设备设置中使用应用专用密码(在Gmail帐户中创建):使用应用专用密码登录
如果没有,请尝试以下操作:在https://mail.google.com上使用网络浏览器登录Gmail帐户,然后转到“设置”>“帐户和导入”>“其他Google帐户”设置。在“安全性”下,向下滚动并启用对安全性较低的应用程序的访问。必须启用此设置才能启用SMTP,POP或IMAP访问。
如果仍然存在问题,请尝试清除验证码:访问https://accounts.google.com/DisplayUnlockCaptcha并使用Gmail用户名和密码登录。如有必要(通常不需要),请在变形的图片中输入字母,然后按继续。设备需要十分钟才能注册为批准的连接。请注意,您必须使用要添加到设备中的帐户-如果浏览器已经登录到另一个帐户,则必须先退出。另外,您必须在按“继续”十分钟之内触发设备建立连接。
Google支持小组的说明