LaravelでGメールを送信する方法。アプリパスワードを取得すればOK。

Laravelにログイン機能を実装し、パスワードリセットのために以下のようにメール送信の設定を追加。

.env

他のメール プラットフォームで Gmail のメールをチェックする – Gmail ヘルプ

https://support.google.com/mail/answer/7126229?hl=ja

この状態でパスワードリセットのメールを送信しようとしたら、以下のようなエラーが発生。

Laravelからメールを送信したときのエラー

ホスト名・ポート番号・メールアドレス・パスワードなどは間違っていないし、Googleアカウントの2段階認証を解除してもダメだった。

色々調べた結果、Laravelのような外部アプリからメールを送信するときは普通にログインするときに使用するパスワードではなく「アプリパスワード」と呼ばれる専用のパスワードが必要と判明(取得方法は後述)。

※実際、エラーメッセージ中の”Application-specific password required(アプリケーション特有のパスワードが必要)”との記述がある。

Googleアカウントのアプリパスワードを取得する方法

  1. LaravelにログインしたいアカウントでGoogleにログインする
  2. 右上のメニュー(自分の名前が表示された丸いアイコンをクリックして開く)の「Googleアカウントを管理」をクリック
  3. 左側のメニューの「セキュリティ」をクリック
  4. 「Google へのログイン」の「アプリパスワード」をクリック
  5. 「アプリを選択」から「その他」を選び、適当なアプリ名(Laravelアプリ、等)を入力して「生成」をクリック
  6. 画面に表示されるアプリパスワードを取得(一度しか表示されないので注意)

取得したアプリパスワードはLaravelの.envの”MAIL_PASSWORD”にコピペすればOK。

.env

これでLaravelからメールを送信できるようになる(Googleアカウントの二段階認証は有効にしたままでOK)。

もし、アプリパスワードを使ってもログインできないときは以下も試す。

  • 一旦サービスを停止させて再開する
  • 再開前にキャッシュを削除する
Laravel キャッシュの削除

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です