【Laravel5.6】Mailtrapを使って日本語のパスワードリセット用のテストメールを送信する方法

Laravel メールテスト

Mailtrapを使って、下の画像の「Forgot Your Password?」のリンクからパスワードリセットのメールを送れるようにします。そしてパスワードリセットのメール本文を日本語化していきます。

 

この記事はカラムなどは追加せず、デフォルトのファイルで、以下のコマンドを実行しただけの状態での説明です。

 

大まかな手順は以下の通り。

  1. Mailtrapのアカウント作成・登録
  2. Mailtrapでメール送信のテストを行えるようにする
  3. 日本語化の独自テンプレートの作成し、メール本文を日本語化する

1.Mailtrapのアカウント作成・登録

Mailtrapを使えば、パスワードの再設定などのメール送信のテストを簡単に行うことができます。

まずはMailtrapのアカウントを作成していきましょう。

お使いのメールアドレスを登録していただければいいのですが

Gmailのアドレスでアカウントを作成した場合、下の画像の登録確認メールをうまく受信できませんでした。

Yahooメールのアドレスでアカウントを作成すると登録確認メールを受信することができました。

こんな感じのメールが届くので、「Confirm my account」のボタンを押して、ログインします。

パスワードメール

 

ログインできたらHome画面にいき、Demo inboxをクリックします。

mailtrap

デモのメールボックス画面です。画面右のSMTPの赤枠の値を使って.envファイルを修正し、Mailtrapの設定をしていきます。

mailtrap

 

2.Mailtrapでメール送信のテストを行えるようにする

Mailtrapでメール送信のテストができるように設定していきます。まずは.envファイルの修正です。

 

.envファイルの修正

上の画像のSMTPの赤枠の値を使って、.envファイルを修正します。

MAIL_USERNAMEとMAIL_PASSWORDを変更します。他はデフォルトの値のままいけるハズ。

 

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

「Forgot Your Password?」のリンクをクリックし、ここから↓(http://localhost:8000/password/reset)メールを送信してみましょう。

もちろん最初にRegisterからユーザーを登録しておいてください。seederを使ってテストデータをデータベースに設定してもらっても構いません。

パスワードリセット日本語化

 

送信したあと、Mailtrapにメールが届いているか確認してみます。こんな感じ↓のメールが届いていたらOKです。

ちなみにResetPasswordと書いている青のボタンからはリンク先へ飛ぶことはできません。

Laravel

 

うまくメールが届かない場合は、キャッシュを削除してみてください。

 

これでひとまずMailtrapにメールが送れることを確認することができました。

ちなみに.envファイルの先ほど変更したコードの下に以下のコードを追記すると、fromを変更できます。

 

パスワードメール

 

3.独自テンプレートを作成し、メール本文を日本語化する

では、メール本文を日本語化していきましょう。

実はメール本文のテンプレートは以下のパスにあります。

vendor/laravel/framework/src/Illuminate/Notifications/resources/views/email.blade.php

でも、vendorに入っているし、このbladeファイルを修正するのはなんか色々めんどくさいっぽいです。

なので独自でメールの内容を日本語化するテンプレートを用意していきます。

 

通知クラスの作成

通知クラスを作成します。

 

認証機能を持たせているモデルにメソッドを追加(デフォルトではUserモデルなので Userモデルに記載しています。)

 

通知クラスを編集

先ほど実行したコマンドの「php artisan make:notification CustomPasswordReset」で作成した通知クラスを編集していきます。

 

メール本文のbladeファイルを作成する

viewsにemailsディレクトリを作りましょう。さらにemailsディレクトリの中に、reset.blade.phpを作ります。

パスワードメール

 

「$actionUrl」の中に、Password/reset/hogefuga…にとばすURLが代入されています。

 

うまくいけば、こんな感じのメールが届くはずです。

パスワード再設定用のメール

 

で、メール本文のURLリンクをクリックすると下の画像に飛ぶ。このページのURLが「{{ $actionUrl }}」に代入されています。

パスワード再設定

 

項目を入力して、ボタンをクリック。以下の画像が出てきたら完了です!

パスワードリセット
Laravel メールテスト

コメントを残す

ABOUTこの記事をかいた人

正社員SESエンジニア。やりたいことが見つからないので4年間で5回転職しました。今はプログラミングスキルを磨いています。業務委託としてWeb系スタートアップにアサインし、新規Webサービスの開発もしています。使用言語はLaravel。未経験からエンジニアを目指す情報発信しています。