如何自定义Laravel邮件模板?重置密码、邮箱验证类邮件如何修改?
编辑Laravel框架重置密码、验证邮箱邮件模板方法

方法1:直接修改框架默认导出的模板
如果你只需要调整邮件的样式、布局,不需要修改内容文本,可以直接导出框架内置模板修改:
- 执行导出通知模板命令:
php artisan vendor:publish --tag=laravel-notifications
执行后模板会生成在resources/views/vendor/notifications目录,其中email.blade.php为默认HTML邮件模板,plain.blade.php为纯文本邮件模板,你可以直接修改这两个文件的样式、布局结构。 - 如果你使用markdown格式的邮件,额外执行导出命令:
php artisan vendor:publish --tag=laravel-mail
对应markdown组件模板会生成在resources/views/vendor/mail目录,可自行修改组件样式、布局。
方法2:自定义邮件内容文本
如果需要修改邮件的标题、提示语、按钮文本等内容,重写用户模型对应的通知发送方法即可:
修改重置密码邮件内容
- 执行命令生成自定义重置密码通知类:
php artisan make:notification ResetPasswordNotification - 打开
app/Models/User.php,重写sendPasswordResetNotification方法:
use App\Notifications\ResetPasswordNotification; public function sendPasswordResetNotification($token) { $this->notify(new ResetPasswordNotification($token)); }
- 编辑生成的
app/Notifications/ResetPasswordNotification.php的toMail方法,自定义内容:
public function toMail($notifiable) { $resetUrl = url(route('password.reset', [ 'token' => $this->token, 'email' => $notifiable->getEmailForPasswordReset(), ])); return (new \Illuminate\Notifications\Messages\MailMessage) ->subject('账户密码重置请求') ->greeting('您好') ->line('我们收到了你的密码重置申请,点击下方按钮完成重置:') ->action('重置密码', $resetUrl) ->line('该链接有效期为60分钟,过期后请重新发起申请。') ->line('如果你没有操作过该请求,无需处理此邮件。') ->salutation(config('app.name')); }
修改邮箱验证邮件内容
- 执行命令生成自定义邮箱验证通知类:
php artisan make:notification VerifyEmailNotification - 打开
app/Models/User.php,重写sendEmailVerificationNotification方法:
use App\Notifications\VerifyEmailNotification; public function sendEmailVerificationNotification() { $this->notify(new VerifyEmailNotification()); }
- 编辑
app/Notifications/VerifyEmailNotification.php的toMail方法自定义内容,逻辑和重置密码通知一致。
方法3:完全自定义邮件模板
如果默认布局完全不满足需求,你可以自己新建独立的邮件blade模板,在通知类中指定加载即可:
public function toMail($notifiable) { $data = [ 'url' => '你的验证/重置链接', 'user' => $notifiable ]; return (new \Illuminate\Notifications\Messages\MailMessage) ->subject('请验证你的邮箱地址') ->view('emails.verify-email', $data); }
你只需要在resources/views/emails目录下新建对应的verify-email.blade.php,编写自定义的HTML邮件内容即可。
内容的提问来源于stack exchange,提问作者John Harold Beltran
相关产品推荐
相关产品推荐

