我已经设置了 google 帐户的身份验证,并且能够获取用户的访问和刷新 token ,但是当我将范围设置为仅 https://www.googleapis.com/auth/gmail.send 时它不起作用,但是当我将身份验证范围设置为 https://mail.google.com/ 时然后它可以正常工作。这里发生了什么?为什么我不能只使用发送范围通过 nodemailer 发送电子邮件?这是我的代码:-
var nodemailer = require('nodemailer');
let transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 587,
secure: false,
requireTLS: true,
auth: {
type: 'OAuth2',
clientId: 'my_client_id',
clientSecret: 'my_client_secret'
}
});
transporter.sendMail({
from: 'user@gmail.com',
to: 'target@gmail.com',
subject: 'Message',
text: 'Hi there',
auth: {
user: 'user@gmail.com',
refreshToken: 'user_refresh_token',
accessToken: 'user_access_token'
}
}).catch(error => {
console.log(error);
});
最佳答案
Nodemailer 文档中有一条注释,指出范围必须是“https://mail.google.com/”:https://nodemailer.com/smtp/oauth2/#troubleshooting
而且它实际上是由谷歌在这里指定的:https://developers.google.com/gmail/imap/xoauth2-protocol
关于oauth - 在 nodemailer 中通过 gmail oauth 发送电子邮件需要哪个范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58835495/