【保存版】Gmailを利用したLaravelのメール送信設定

Laravel laravel
Gmailを利用したLaravelのメール送信設定 - Qiita
Laravelは認証機能をサクッと作れて便利ですよね。5系だったらphp artisan make:auth、最近の8系でもphp artisan jetstream:installで簡単に作る(…

Laravelは認証機能をサクッと作れて便利ですよね。
5系だったらphp artisan make:auth、最近の8系でもphp artisan jetstream:installで簡単に作る(というか用意してもらう)ことができます。

ただ、認証周りでもパスワードリセットなどのメールが絡む機能の設定だけは自分でやる必要があります。

他の方の資料を参照しつつ、Gmailを利用したメール設定をしていきます!

ちなみに、以下の環境でお送りします。

Laravel ver8
デプロイ先heroku

1.Gmailで2段階認証の設定

・Chromeでgoogleを見ると表示されるメニューから「アカウント」を選択

・左メニュー「セキュリティ」から「2段階認証」を選択

※ はじめての人は↑のアプリパスワードの欄がないかもしれませんが、一旦気にせず進めます。

・パスワードを入力する(パスワード忘れた場合はリセットして入力を進める)

・パスワード入力を終えると2段階認証の方法を選択する画面に移ります。

この画面の認証設定はデフォルトの「音声」「テキストメッセージ」どちらでもOKです。
[次へ]に行くとスマホ等にパスワードが送られてくるので、それを画面に打つと↓のような画面が表示されたら次のステップへ行きます。

image.png

2. ログインできるアプリの登録

左メニューからデータとプライバシー > アプリとサービス > アカウントにアクセスできるサードパーティーアプリの登録 を選択!
*最近設定したらカード全体ではなく、アイコン>しかクリックできないようになってたので注意。

image.png

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

タイトルとURLをコピーしました