Saba note

醜悪コード Ugly hacks ITものづくり

Laravel5のパスワードリセットメールを日本語にする

例によってフロントコントローラは非常に簡素。むしろ何もしていない。

app/Http/Controllers/Auth/ForgotPasswordController.php

むしろこいつが全部やってます。

vendor/laravel/framework/src/Illuminate/Foundation/Auth/SendsPasswordResetEmails.php

こっから先はファサードとサポートの嵐で正直ソース追うのがつらいので、独自クラスでやった方がよさそうです。

パスワードリセットメールを日本語にする

新規で通知クラスを作成します。Laravel 5.4 通知

php artisan make:notification JaPasswordReset

app/Notifications/*に新しいクラスが作成されます。今回は当然JaPasswordReset.phpが作成されています。
このクラスをapp/User.phpで使えるようにしてあげます。

//app/User.php
// 日本語のパスワードリセットメール
use App\Notifications\JaPasswordReset;
....
class User extends Authenticatable
{
use Notifiable;
....
public function sendPasswordResetNotification($token)
{
    $this->notify(new JaPasswordReset($token));
}
....

メールテンプレートを作成

app/Notifications/JaPasswordReset.phpのtoMailメソッドを独自のものに書き換えます。

public function toMail($notifiable)
{
    return (new MailMessage)
        ->subject(__('パスワードリセットの準備ができました'))
        ->view('mails.reset')
        ->action(__('パスワードリセット'), url('password/reset', $this->token));
//                    ->line('The introduction to the notification.')
//                    ->action('Notification Action', url('/'))
//                    ->line('Thank you for using our application!');
}

viewで設定したところにメールのテンプレートを作成します。日本語にしたものを書けばいいです。
resources/views/mails/reset.blade.php

<a href="{{ config('app.url') }}">{{ config('app.name') }}</a><br>
<br>
パスワードをリセットします。以下のリンクをクリックしてください。<br>
このメールに心当たりのない場合は、無視してください。
<p>
    {{ $actionText }}: <a href="{{ $actionUrl }}">{{ $actionUrl }}</a>
</p>

送信テストなどひと通りやって問題なかったらOKだと思います。


Laravel5.4: 日本語のパスワードリセット用のメールを送信する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です