nodemailer サイトの指示に忠実に従いましたが、Google サービス アカウントの OAuth2 が機能しません。
「ホスト」をmail.google.comに設定するとECONNタイムアウトが発生するか、ホストとしてsmtp.gmail.comを使用すると「401、ユーザー/パスワードが受け入れられず、アクセストークンを作成できません」というエラーが発生します。
- これをテンプレートとして使用しました: http://nodemailer.com/smtp/oauth2/#example-4
- サービス アカウントをセットアップしました: https://developers.google.com/identity/protocols/OAuth2ServiceAccount
- Gmail API を有効にしました。
- 検証するトークンを作成しました: https://www.googleapis.com/oauth2/v1/tokeninfo
- また、トークンを生成するために xoauth2 npm パッケージを試しましたが、失敗しました...
- 私もこの質問の答えを試しましたが、まだ運がありません...
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);
});
});
エラーが発生した:
535-5.7.8 ユーザー名とパスワードが受け入れられません。しかし、前述したように、さまざまな構成と設定を試してみましたが、さまざまなエラーが発生しました...
SO ... nodemailerを使用して2LOのサービスアカウントを使用することに成功した人はいますか?
ノード 9.5.0 とノードメーラー ^4.6.0 を使用しています