記事の主旨
GmailのSMTP利用する際には、
- Googleアカウントのセキュリティ設定を忘れず、済ましておいてくださいね
- 「安全性の低いアプリの許可」に逃げず、「二段階認証/アプリパスワード」を使いましょう
というだけの記事です。
SMTP Error: Could not authenticate.
エラーにつまった人向けの備忘録です。
メール送信のサンプルコード
Googleアカウント作成〜メール送信に成功するまで
Googleセキュリティ設定を意識せずに、作業をした場合に起こること・対処方法です。
Googleアカウントを作成する。
- ID : サンプルコード内の
from@gmail.com
- PW : アカウントの
マスタパスワード
(point)作成段階のデフォルト設定では、セキュリティ上、SMTPエラー(アクセス不可)になってます。
サンプルコードで、テスト送信してみる。が、あえなくエラー発生。
以下を実行しても
## ID / PW を作成したアカウント情報に書き換えて、以下を実行
$ php test_sendmail.php
エラーが発生する。
2019-12-09 08:30:35 SERVER -> CLIENT: 535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials o15sm24713268pgf.2 - gsmtp
2019-12-09 08:30:35 SMTP ERROR: Password command failed: 535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials o15sm24713268pgf.2 - gsmtp
2019-12-09 08:30:35 SMTP Error: Could not authenticate.
2019-12-09 08:30:35 CLIENT -> SERVER: QUIT
2019-12-09 08:30:35 SERVER -> CLIENT: 221 2.0.0 closing connection o15sm24713268pgf.2 - gsmtp
2019-12-09 08:30:35 SMTP Error: Could not authenticate.
PHP Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not authenticate. in /home/ec2-user/tests/vendor/phpmailer/phpmailer/src/PHPMailer.php:2019
https://support.google.com/mail/?p=BadCredentialsを見て頓挫する。。人は続きを読んでください。
通信が届いていることを確認する。
問題なし。(まぁ、ログ上でも到達できているので、当たり前ですが一応。)
$ telnet smtp.gmail.com 587
Trying 74.125.23.108...
Connected to smtp.gmail.com.
Escape character is '^]'.
220 smtp.gmail.com ESMTP g191sm26005183pfb.19 - gsmtp
Googleアカウント側(Gmail)を確認する。
以下のようなメールが届く。
(メール届いてない方は、純粋に ID/PW間違いを疑ってください。)
¥
非推奨Google側のアクセス許可を"有効"にする。
https://support.google.com/mail/?p=BadCredentials
に習って、
を"有効"にして、再度テスト送信する。
→無事にメールが受信できた。けど!!この方法は、非推奨なので、次の項までやってくださいね。
Google側の二段階認証を有効にし、アプリパスワードを発行する。
注意) 安全性の低いアプリの許可を"無効"に戻すことは忘れないように。
https://blog.saboh.net/smtpgmailcom/
上記サイトが大変分かりやすいので、参考にしてください。
## PWを発行した「アプリパスワード」に書き換えて、以下を実行
$ php test_sendmail.php
→無事にメールが受信できた。お疲れ様でした。