前提
タイトルの通りですが、今までは問題がなかった「Node.jsでのGmail送信」が、エラーによって送信できなくなりました。
メール送信に使っているアカウントには、「5 月 30 日より、安全性の低いログイン技術を使用するアプリにアクセスできなくなる可能性があります」というメールがGoogle側より送られて来ておりましたが、このアカウントが送信専用だったため見落としていました。
実現したいこと
今まで通り、Node.jsからGmail送信が行えるように、設定の変更やソースコードの修正を行いたいと思っています。
上記の「Google側からのメール」には、以下のメッセージが記載されていました:
★★★
簡易メール転送プロトコル(SMTP)を使用するアプリやデバイスは、Google アカウントを通じてメールを送信する際に、安全性の低い方法で Gmail にアクセスしています。プリンタやスキャナなど、古いデバイスはこれに該当する可能性があります。このようなアプリやデバイスで引き続き Google アカウントを使用するには、次の操作を行う必要があります。
アプリの場合: アプリから Google アカウントを削除し、Google でログインを使用してログインし直します。
デバイスの場合: より安全なログイン技術が使用されるようにデバイスの設定を変更します。
★★★
発生している問題・エラーメッセージ
今まで動作していた「テスト送信用のコード」を実行すると、このようなエラーが発生するようになりました。
Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 https://support.google.com/mail/?p=BadCredentials p5-20020a170902bd0500b00163ef7be14csm3646975pls.89 - gsmtp at SMTPConnection._formatError (/XXXXXXXX/node_modules/nodemailer/lib/smtp-connection/index.js:784:19) at SMTPConnection._actionAUTHComplete (/XXXXXXXX/node_modules/nodemailer/lib/smtp-connection/index.js:1536:34) at SMTPConnection.<anonymous> (/XXXXXXXX/node_modules/nodemailer/lib/smtp-connection/index.js:540:26) at SMTPConnection._processResponse (/XXXXXXXX/node_modules/nodemailer/lib/smtp-connection/index.js:947:20) at SMTPConnection._onData (/XXXXXXXX/node_modules/nodemailer/lib/smtp-connection/index.js:749:14) at TLSSocket.SMTPConnection._onSocketData (/XXXXXXXX/node_modules/nodemailer/lib/smtp-connection/index.js:189:44) at TLSSocket.emit (events.js:315:20) at addChunk (internal/streams/readable.js:309:12) at readableAddChunk (internal/streams/readable.js:284:9) at TLSSocket.Readable.push (internal/streams/readable.js:223:10) { code: 'EAUTH', response: '535-5.7.8 Username and Password not accepted. Learn more at\n' + '535 5.7.8 https://support.google.com/mail/?p=BadCredentials p5-20020a170902bd0500b00163ef7be14csm3646975pls.89 - gsmtp', responseCode: 535, command: 'AUTH PLAIN'
該当のソースコード
Node.js
1const nodemailer = require ('nodemailer'); 2 3(async () => { 4 5 //「from」および「to」はマスキング 6 const message = { 7 from: 'hogehoge', 8 to: 'darekasan@example.com', 9 subject: 'TEST', 10 text: 'TEST TEST' 11 }; 12 13 const smtpConfig = { 14 host: 'smtp.gmail.com', 15 port: 465, 16 secure: true, 17 //「user」および「pass」はマスキング 18 auth: { 19 user: 'hogehoge@gmail.com', 20 pass: 'himitsu' 21 } 22 }; 23 24 const mailer = nodemailer.createTransport (smtpConfig); 25 26 console.dir (await mailer.sendMail (message)); 27}) ();
試したこと
まずはGoogle側からのメールで「★★★」のメッセージを参考に、「Googleアカウント」の「安全性の低いアプリのアクセス」ページに行きましたが、「この設定は使用できません」となって変更ができません。
その画面にあった「詳細」をクリックすると、「アカウントを安全に保つため、2022 年 5 月 30 日より、Google は、ユーザー名とパスワードのみで Google アカウントにログインするサードパーティ製のアプリとデバイスについてサポートを終了いたします。」というメッセージが表示されます。
その他で、メール送信できるようになる方法を見出そうとしましたが、「安全性の高いアプリに切り替えることをおすすめします。」というメッセージと、「サード-パーティ製のアプリについての記事」という項目程度しかなく、具体的なコードの修正方法などは確認できませんでした。
設定の変更やソースコードの修正で、再びメール送信が行える方法をご存じな方がいらっしゃるのであれば、何とぞその方法をご教示いただけませんでしょうか。
補足情報(FW/ツールのバージョンなど)
Node.js v14.15.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。