让 nodemailer 使用不同的 gmail 帐户发送电子邮件
Posted
技术标签:
【中文标题】让 nodemailer 使用不同的 gmail 帐户发送电子邮件【英文标题】:making nodemailer send emails with different gmail accounts 【发布时间】:2021-11-09 23:02:53 【问题描述】:我成功通过passportjs 进行身份验证,但nodemailer 仅使用console.cloud.google 中使用的一封电子邮件发送电子邮件。
当我尝试其他 gmail 帐户时,我收到此错误:
错误:无效登录:535-5.7.8 不接受用户名和密码。 在 535 5.7.8 了解更多信息 https://support.google.com/mail/?p=BadCredentialsu6sm13346885wrp.0 - gsmtp 在 SMTPConnection._formatError (/var/www/html/Recrute/node_modules/nodemailer/lib/smtp-connection/index.js:784:19) 在 SMTPConnection._actionAUTHComplete (/var/www/html/Recrute/node_modules/nodemailer/lib/smtp-connection/index.js:1536:34) 在 SMTP 连接。 (/var/www/html/Recrute/node_modules/nodemailer/lib/smtp-connection/index.js:1515:26) 在 SMTPConnection._processResponse (/var/www/html/Recrute/node_modules/nodemailer/lib/smtp-connection/index.js:947:20) 在 SMTPConnection._onData (/var/www/html/Recrute/node_modules/nodemailer/lib/smtp-connection/index.js:749:14) 在 TLSSocket.SMTPConnection._onSocketData (/var/www/html/Recrute/node_modules/nodemailer/lib/smtp-connection/index.js:189:44) 在 TLSSocket.emit (events.js:376:20) 在 addChunk (internal/streams/readable.js:309:12) 在 readableAddChunk (internal/streams/readable.js:284:9) 在 TLSSocket.Readable.push (internal/streams/readable.js:223:10) code: 'EAUTH', response: '535-5.7.8 Username and Password not 公认。了解更多\n' + '535 5.7.8 https://support.google.com/mail/?p=BadCredentials u6sm13346885wrp.0 - gsmtp',响应代码:535,命令:'AUTH XOAUTH2'
我添加了所有的电子邮件来测试用户。
代码
type: 'oauth2',
user: req.user.email,
clientId: clientId,
clientSecret: clientSecret,
refreshToken: refreshToken,
;
var mailOptions =
from: req.user.email,
to: 'email@gmail.com',
subject: req.query.sbjct,
text: req.query.msg,
html: req.query.msg,
;
var transporter = nodemailer.createTransport(
service: 'gmail',
auth: auth,
);
transporter.sendMail(mailOptions, (err, res) =>
if (err)
return console.log(err);
else
res.send('done !');
```
【问题讨论】:
您应该在您的 Gmail Id(hotter.io/docs/email-accounts/secure-app-gmail) 上启用“不太安全”,然后重试 问题是我避免这样做,我不想强迫用户这样做 【参考方案1】:Gmail 不完全允许从第三方应用程序发送邮件。因此,要从第三方应用程序(例如使用 nodemailer 的应用程序)发送邮件,您需要转到该 gmail 帐户设置并降低该帐户的 gmail 安全性 [不太安全][1]。 nodemailer docs
你的 createTransport 应该是这样的
let transporter = nodemailer.createTransport(
host: "smtp.gmail.email",
port: 587,
secure: false, // true for 465, false for other ports
auth:
user: your username, // generated gmail user
pass: your password, // generated gmail password
,
);
【讨论】:
以上是关于让 nodemailer 使用不同的 gmail 帐户发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
带有 Gmail 服务的 Nodemailer 无法在 heroku 上运行
Nodemailer、Heroku、Gmail、无效登录 - 在本地工作
无法通过 nodemailer 发送电子邮件 |发件人“电子邮件 id@gmail.com>”无效