You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Laravel 8 Fortify发送邮箱验证请求的默认邮件模板?

刚好我之前在Laravel 8 + Fortify的项目里做过这个需求,给你两种可行的方案,按需选择就行:

方案一:直接覆盖默认验证邮件视图

这种方法最简单,适合只需要修改邮件内容样式的场景:

  • Laravel 默认的邮箱验证视图存放在框架的 vendor/laravel/framework/src/Illuminate/Notifications/resources/views/verify-email.blade.php
  • 你只需要把这个文件复制到项目的 resources/views/vendor/notifications/ 目录下(如果vendor/notifications目录不存在,手动创建即可)
  • 然后打开复制后的verify-email.blade.php,按照你的需求修改HTML结构、文字内容或者样式就可以了。Fortify会自动优先加载你自定义的这个视图。

方案二:自定义通知类(更灵活)

如果需要修改邮件主题、添加额外数据或者完全自定义视图结构,推荐用这种方式:

  1. 创建自定义通知类
    在app/Notifications目录下新建CustomVerificationEmail.php文件,内容如下:
<?php

namespace App\Notifications;

use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Auth\Notifications\VerifyEmail as VerifyEmailNotification;

class CustomVerificationEmail extends VerifyEmailNotification
{
    // 自定义邮件内容和视图
    public function toMail($notifiable)
    {
        $verificationUrl = $this->verificationUrl($notifiable);

        // 如果你想用自定义视图,就用view方法;如果只是改文字,用默认的MailMessage方法就行
        return (new MailMessage)
            ->subject('【你的网站名】请验证你的邮箱')
            ->greeting('嗨,'.$notifiable->name.'!')
            ->line('感谢你注册我们的网站,请点击下方按钮完成邮箱验证。')
            ->action('立即验证邮箱', $verificationUrl)
            ->line('如果这不是你操作的,请忽略此邮件。');

        // 如果你要完全自定义HTML视图,替换上面的return为下面这段:
        // return (new MailMessage)
        //     ->subject('【你的网站名】请验证你的邮箱')
        //     ->view(
        //         'emails.verify-email', // 自定义视图路径
        //         ['user' => $notifiable, 'verificationUrl' => $verificationUrl]
        //     );
    }
}
  1. 告诉Fortify使用自定义通知类
    打开app/Providers/FortifyServiceProvider.php,在boot方法里添加以下代码:
use App\Notifications\CustomVerificationEmail;
use Laravel\Fortify\Fortify;

public function boot()
{
    // 保留原有的boot方法内容,新增下面这段
    Fortify::verifyEmailNotification(function ($user) {
        return new CustomVerificationEmail();
    });
}
  1. 如果用自定义HTML视图(可选)
    如果上面的通知类里用了view方法,需要创建对应的视图文件resources/views/emails/verify-email.blade.php,比如:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>邮箱验证</title>
    <style>
        /* 自定义邮件样式 */
        .email-container {
            max-width: 600px;
            margin: 0 auto;
            padding: 20px;
            border: 1px solid #eee;
            border-radius: 8px;
        }
        .verify-btn {
            display: inline-block;
            padding: 10px 20px;
            background: #2563eb;
            color: white;
            text-decoration: none;
            border-radius: 4px;
        }
    </style>
</head>
<body>
    <div class="email-container">
        <h2>嗨,{{ $user->name }}!</h2>
        <p>感谢你加入我们,请点击下方按钮验证你的邮箱地址:</p>
        <p><a href="{{ $verificationUrl }}" class="verify-btn">验证我的邮箱</a></p>
        <p>如果这不是你操作的,请忽略此邮件。</p>
    </div>
</body>
</html>

最后,测试一下注册流程,看看收到的邮件是不是你自定义的模板就大功告成啦!

内容的提问来源于stack exchange,提问作者jiedevm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:24:46