【Laravel】パスワードリセットのメールを送信する

Laravel

前回紹介した以下の記事では会員登録とログインはできますが、パスワードをリセットしようとするとエラーが発生してしまいます。

→ 関連記事

【Laravel】会員登録機能・ログイン機能をサクッと作る
この記事ではLaravelで会員登録機能とログイン/ログアウト機能を作る方法について書いています。具体的にはphp artisan make:authやphp artisan migrateを使用して実装していきます。

 

なので今回はLaravelでパスワードをリセットする際にメールを送信させる方法について書いています。

 

Laravelでパスワードリセットのメール送信を実装

Laravelプロジェクトの作成と認証に必要なビューの生成

まずプロジェクトを作成し、認証に必要なビューなどを生成します。

$ composer create-project --prefer-dist laravel/laravel mail_auth
$ cd mail_auth
$ php artisan make:auth

 

DBの設定・マイグレーションの実行

その次に.envファイルでDBの設定を。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mail_auth
DB_USERNAME=root
DB_PASSWORD=root

 

DBを作成し、マイグレーションを実行。

$ mysql -u root -p
mysql> create database mail_auth;
$ php artisan migrate

 

MustVerifyEmail

app/User.phpに以下を追加します。

class User extends Authenticatable implements MustVerifyEmail // implements MustVerifyEmailを追加

 

routes/web.phpのroutesに以下の引数を渡します。

Auth::routes(['verify' => true]); // Auth::routes();の部分をこのように変更

 

mailtrapを使ってメール送信の確認

今回は、mailtrapというサービスを使ってパスワードリセットのメール送信が行われているかどうかを確認します。

 

mailtrapとは、簡単に言えば開発環境でメール送信のテストができるサービスです。

 

まずmailtrapにアカウントを登録し、その後.envの設定を変更します。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=username //mailtrapのユーザー名
MAIL_PASSWORD=password //mailtrapのパスワード
MAIL_ENCRYPTION=null

 

ここまで出来たら一旦、会員登録をした後にログインし、パスワードをリセットするリンクを押してみましょう。

 

ログインページ

 

パスワードリセットリンクをクリックした後のページ

 

パスワードリセット用メールを送信した後のページ

 

mailtrapを確認するとちゃんとパスワードリセットのメールが送られています!

 

コメント