If you're using Laravel
's default authentication for your user management, but wanted to change URI's and text in the default Password Reset email. Well There's a way out we can achieve that in Laravel
.
Default Layout & Text
Create a new Notification
Let's start by creating a new Notification for our new custom emailer with laravel artisan CLI
.
php artisan make:notification MailResetPasswordNotification
You can now find this file under app\Notifications
. Right into the toMail
method, we can make our modifications.
public function toMail( $notifiable ) { $link = url( "/password/reset/?token=" . $this->token ); return ( new MailMessage ) ->view('reset.emailer') ->from('[email protected]') ->subject( 'Reset your password' ) ->line( "Hey, We've successfully changed the text " ) ->action( 'Reset Password', $link ) ->attach('reset.attachment') ->line( 'Thank you!' ); }
Here we've modified the action URI, added the view to be loaded for our email, added a couple of lines and an attachment for our Reset email to look more cool.
Override the sendPasswordResetNotification
method
By default, User model uses the canResetPassword
trait for resetting the passwords, you can find this file under vendor/laravel/framework/src/illuminate/Auth/Passwords/CanResetPassword.php
Now Its time to tell our User.php
to use our custom notification instead of the default one. Let's override sendPasswordResetNotification
.
/** * Send the password reset notification. * * @param string $token * @return void */ public function sendPasswordResetNotification($token) { $this->notify(new App\Notifications\MailResetPasswordNotification($token)); }
Repeat the password recovery steps again & these changes should reflect now in the email.