質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

3656閲覧

Node.jsでのGmail送信がエラーになる

tetakaha759

総合スコア20

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2022/06/13 01:32

前提

タイトルの通りですが、今までは問題がなかった「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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
下記のサイトを参考に、「OAuth 2.0」でメール送信するように設定を変更しました。
https://zenn.dev/hisho/scraps/efbcb7cd2f7b82

ソースコードも、認証情報だけの修正で済みました。

投稿2022/06/13 03:14

tetakaha759

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問