[英]how to send gmail using nodemailer
我正在尝试使用nodemailer
节点模块发送邮件并像这样配置。
... config.js ...
smtp: {
host: "smtp.gmail.com",
port: 465,
secure: true,
auth: {
user: "***@gmail.com",
pass: "****"
}
}
... mail.js ...
const config = require("../config");
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport(config.smtp);
const sendEmail = async (data, res) => {
// if(!data.to || !data.subject)
// return false;
data = { ...data, from: config.smtp.auth.user };
console.log(data)
transporter.sendMail(data, (error, info) => {
console.log(error);
res.send(error);
});
res.send(true)
}
module.exports = sendEmail;
... controller ...
router.get('/testEmail', async (req, res) => {
let emailData = {
to: "***@gmail.com",
subject: "Welcome to Musical World",
content: "test test"
};
let result = sendEmail(emailData, res);
console.log(result)
// res.send(result);
})
当我尝试发送电子邮件时,它会返回
{"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 p25-20020a056638217900b0033c14d2386bsm898629jak.75 - gsmtp","responseCode":535,"command":"AUTH PLAIN"}
所以我做了谷歌搜索,发现这就是为什么我没有在我的谷歌帐户中打开不太安全的应用程序。 但是当我去那里时,谷歌说
我尝试打开less secure apps
,但 G less secure apps
功能不可用。
那我该怎么办?
我终于自己解决了!
从 2022 年 3 月 20 日起,Google 不再支持less secure app
功能。 它将帮助其他遇到此问题的开发人员。
所以我们不能只使用emal and password
访问 gmail。 相反,我们必须使用OAuth2
来访问 gmail。
... config.js ...
smtp: {
service: "gmail",
auth: {
type: "OAuth2",
user: "*****@gmail.com",
pass: "******",
clientId: "********",
clientSecret: "***********",
refreshToken: "************"
}
}
为此,您的谷歌云控制台中必须有 OAuth2 客户端。 这是您可以参考的完整详细信息。
https://www.freecodecamp.org/news/use-nodemailer-to-send-emails-from-your-node-js-server/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.