Lan*_*sey 5 two-legged oauth-2.0 nodemailer
我已按照 nodemailer 站点上的说明进行操作,但是 Google 服务帐户的 OAuth2 对我来说根本不起作用。
使用 smtp.gmail.com 作为主机时,我在将“主机”设置为 mail.google.com或“401,用户/密码不接受,无法创建访问令牌”错误的某种组合时获得 ECONN 超时。
对于 3LO 似乎有无穷无尽的答案,但我没有为 2LO 的工作尝试过。现在,说了这么多。
var nodemailer = require("nodemailer");
var { google } = require("googleapis");
var accessToken;
var expires;
var key = require(“path/to/secrets.json");
var privateKey = key.private_key;
var jwtClient = new google.auth.JWT(key.client_email, null, key.private_key, ["https://mail.google.com/"], null);
jwtClient.authorize(function(err, tokens) {
if (err) {
return;
} else {
token = tokens
accessToken = tokens.access_token //this **IS** a valid token
expires = tokens.expiry_date
}
var transporter = nodemailer.createTransport({
host: "smtp.gmail.com",
port: 465,
secure: true,
auth: {
type: "OAuth2",
user: key.client_email, //I've also used my email here
serviceClient: key.client_id,
privateKey: privateKey,
accessToken: accessToken,
expires: expires,
},
});
var mailOptions = {
from: “me@here.com”
to: “me@there.com",
subject: "Ready",
text: “Really Ready"
}
transporter.sendMail(mailOptions, function(error, info) {
if (error) {
return;
}
console.log("Message %s sent: %s", info.messageId, info.response);
});
});
Run Code Online (Sandbox Code Playgroud)
产生了错误:
535-5.7.8 不接受用户名和密码。但正如我所提到的,我尝试了不同的配置和设置,并得到了同样多不同的错误......
所以......有没有人成功地使用 nodemailer 为 2LO 使用服务帐户?
我正在使用节点 9.5.0 和节点邮件程序 ^4.6.0