Laravel重置邮件Markdown修改求助:无法定位对应文件
Laravel Auth重置密码邮件修改方案
1. 正确导出邮件模板文件
你之前执行的php artisan vendor:publish未指定具体标签,导致没导出对应的重置密码邮件模板。根据你的Laravel版本,执行对应命令:
若使用Laravel 8+ 官方默认Auth(Breeze/Jetstream):
php artisan vendor:publish --tag=laravel-mail或者单独导出通知模板:
php artisan vendor:publish --tag=laravel-notifications导出后模板文件会出现在
resources/views/vendor/mail或resources/views/vendor/notifications目录下。若使用
laravel/ui包生成的Auth:php artisan vendor:publish --tag=laravel-ui-views重置密码邮件模板位于
resources/views/auth/passwords/email.blade.php(纯HTML模板)或对应Markdown模板路径。
2. 修改模板移除开头哈希值
找到对应的Markdown模板(通常是resources/views/vendor/markdown/auth/passwords/reset.blade.php),开头的哈希值就是重置密码的$token变量,直接删除该变量即可。
比如默认模板可能有这样的内容:
{{ $token }} 您收到这封邮件是因为我们收到了您的账户重置密码请求...
删掉开头的{{ $token }}行,就能移除邮件开头的哈希值。
3. 自定义重置密码通知类(可选)
如果找不到模板或需要更灵活的定制,可以创建自定义通知类:
- 生成自定义通知类:
php artisan make:notification CustomResetPassword - 复制
Illuminate\Auth\Notifications\ResetPassword中的代码到新类,修改toMail方法指向你自己创建的模板:public function toMail($notifiable) { $resetUrl = url(route('password.reset', [ 'token' => $this->token, 'email' => $notifiable->getEmailForPasswordReset(), ])); return (new MailMessage) ->subject('重置密码通知') ->markdown('emails.password.reset', ['resetUrl' => $resetUrl]); } - 在
User模型中重写发送通知的方法:use App\Notifications\CustomResetPassword; public function sendPasswordResetNotification($token) { $this->notify(new CustomResetPassword($token)); }
4. 清除缓存确保修改生效
修改模板后,执行以下命令清除缓存,避免旧模板缓存影响:
php artisan view:clear php artisan config:clear
内容的提问来源于stack exchange,提问作者IN33dSomeHelp
相关产品推荐
相关产品推荐

