Laravelは認証機能をサクッと作れて便利ですよね。
5系だったらphp artisan make:auth
、最近の8系でもphp artisan jetstream:install
で簡単に作る(というか用意してもらう)ことができます。
ただ、認証周りでもパスワードリセットなどのメールが絡む機能の設定だけは自分でやる必要があります。
他の方の資料を参照しつつ、Gmailを利用したメール設定をしていきます!
ちなみに、以下の環境でお送りします。
Laravel ver8
デプロイ先heroku
1.Gmailで2段階認証の設定
・Chromeでgoogleを見ると表示されるメニューから「アカウント」を選択
※ はじめての人は↑のアプリパスワードの欄がないかもしれませんが、一旦気にせず進めます。
・パスワードを入力する(パスワード忘れた場合はリセットして入力を進める)
↓
・パスワード入力を終えると2段階認証の方法を選択する画面に移ります。
この画面の認証設定はデフォルトの「音声」「テキストメッセージ」どちらでもOKです。
[次へ]に行くとスマホ等にパスワードが送られてくるので、それを画面に打つと↓のような画面が表示されたら次のステップへ行きます。
2. ログインできるアプリの登録
左メニューからデータとプライバシー > アプリとサービス > アカウントにアクセスできるサードパーティーアプリの登録 を選択!
*最近設定したらカード全体ではなく、アイコン>
しかクリックできないようになってたので注意。
2.アプリパスワードの発行
・セキュリティ画面へ戻り「アプリパスワード」を選択、パスワード入力を求められるので、再度入力
アプリパスワードの画面にいったら、、、
・アプリを選択 > メール
・デバイスを選択 > その他 > アプリの名前を入力
して生成ボタンを押す。
・アプリパスワードが表示されるのでメモする。
※ メモを忘れたら再発行しましょう
これでGmail側でやることは終わりました。
3.Laravel側の環境変数に設定する
Laravelの環境変数(Mail_xxxx
)を設定していきます。
.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=hoge@example.com // メールアドレス
MAIL_PASSWORD=hogehogehoge // アプリパスワード
MAIL_FROM_ADDRESS=hoge@example.com // MAIL_USERNAMEと同じ
MAIL_FROM_NAME=Laravel便り // メール送信元名
herokuにデプロイしている場合はアプリの管理ページ内Settings > Config vars
から設定します。
これでメール送信のための設定は終わりです。
パスワードリセット画面などからメールを送信してみましょう!
補足
・開発環境と本番環境どっちもでメール送信する時はそれぞれに別のアプリパスワードを発行・設定する必要あり
・.env
に書いた場合はphp artisan cache:clear
を実行してキャッシュ(編集前の環境変数情報)を消す
・デプロイしたアプリの.env
に設定した場合はcache:clear
の後にphp artisan config:cache
を実行する
参考資料
Laravelメール送信機能の実装でmailtrapやGmailのSMTPサーバーを使ってみる
Laravelでメール送信を送信したい
LaravelでGメールを送信する方法。アプリパスワードを取得すればOK。
Failed to authenticate on SMTP server with username