PR

【Laravel】Gmailでパスワードリセットメールを送信する方法

アイキャッチ画像

Laravelでパスワードリセットメールなどの機能を実装するとき、無料のGmailを利用してメールが送信できると便利ですよね。

本記事では、Gmailを使ってパスワードリセットメールを送信する方法を解説します。
設定はわりと簡単ですが、知らないとハマってしまうポイントへの対処法も併せて紹介します。

ターゲット読者

Laravelのメール送信機能でGmailを使いたい人

この記事でわかること

LaravelにGmailでメール送信機能を実装する手順と注意点

前提条件

Laravelで認証機能を実装済みであること。

動作環境

Laravel 6.20.7

手順

① Googleアカウントのセキュリティレベルを低くする

Googleアカウントで、サイドバーの「セキュリティ」をクリック。

下へスクロールしていき、「安全性の低いアプリのアクセス」をクリック。

バーをクリックして「安全性の低いアプリの許可: 有効」にします。

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

さきほどのセキュリティ画面で、「Google へのログイン」セクションの「2段階認証プロセス」をオンにしてください。
設定方法はここでは省略しますが、容易です。

引き続き、セキュリティ画面で、「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でパスワードリセットメールを送信する方法』でした。