[英]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.