Laravelでパスワードリセットメールなどの機能を実装するとき、無料のGmailを利用してメールが送信できると便利ですよね。
本記事では、Gmailを使ってパスワードリセットメールを送信する方法を解説します。
設定はわりと簡単ですが、知らないとハマってしまうポイントへの対処法も併せて紹介します。
Laravelのメール送信機能でGmailを使いたい人
LaravelにGmailでメール送信機能を実装する手順と注意点
前提条件
Laravelで認証機能を実装済みであること。
動作環境
Laravel 6.20.7
手順
① Googleアカウントのセキュリティレベルを低くする
Googleアカウントで、サイドバーの「セキュリティ」をクリック。
下へスクロールしていき、「安全性の低いアプリのアクセス」をクリック。
バーをクリックして「安全性の低いアプリの許可: 有効」にします。
② Googleアカウントのアプリパスワードを取得する
引き続き、セキュリティ画面で、「Google へのログイン」セクションの「アプリ パスワード」をクリック。
「アプリを選択」をクリックして、一番下の「その他(名前を入力)」を選択します。
名前は分かりやすいものを入力して、生成ボタンをクリック
16文字のパスワードが表示されるので、コピーします。
③ config/mail.phpを編集
Laravelのconfig/mail.phpファイルを下記のように編集します。
'from' => [
// 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), を下記へ上書き
'address' => env('MAIL_FROM_ADDRESS', null),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
④ .envを編集
Laravelの.envファイルを下記のように編集します。
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=test@gmail.com // 使う予定のGmailアドレスを入力
MAIL_PASSWORD=xxxxxx // 先ほどのアプリパスワードを入力
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=test@xmail.com // 使う予定のGmailアドレスを入力
MAIL_FROM_NAME="アプリ名"
ちなみに、アプリパスワードを入力せず、Gmailアカウントのパスワードを入力して送信テストをすると以下のようなエラーが出ます。
Failed to authenticate on SMTP server with username "test@gmail.com" using 3 possible authenticators.
Authenticator LOGIN returned Expected response code 235 but got code "534", with message "534-5.7.9 Application-specific password required. Learn more at 534 5.7.9
これで、送信できるようになります。
もし、それでも送信できない場合は「キャッシュを削除して再読み込み」をしてください。
方法は、以下のコマンドを打つか、ブラウザがchromeの場合は、ブラウザ上で右クリック→「検証」→左上のクルクルを右クリック→「キャッシュの消去とハード再読み込み」をクリック。
php artisan cache:clear
まとめ
Gmailを使えば、無料でLaravelのメール機能を使うことが出来るので便利です。ぜひ、活用していきましょう。
以上、『【Laravel】Gmailでパスワードリセットメールを送信する方法』でした。