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

Laravel自定义密码重置邮件模板出现Attempt to read property 'view' on null 500错误求助

解决Laravel密码重置通知的500错误:Attempt to read property "view" on null

这个错误的核心原因是你的ResetPasswordNotification类的toMail方法没有返回Laravel通知系统期望的对象——它需要返回一个MailMessage实例或者Mailable类的实例,而你现在直接调用了Mail::send(),这个方法的返回值不是通知系统能处理的类型,导致MailChannel在后续处理时试图读取null的view属性,从而抛出500错误。

修正步骤

1. 调整ResetPasswordNotification的toMail方法

把手动调用Mail::send()的逻辑改成返回你的ResetPasswordMail实例,让Laravel的通知系统负责邮件发送工作:

public function toMail($notifiable) {
    // 返回Mailable实例,而非直接调用send
    return (new ResetPasswordMail($this->url))->to($this->email);
}

2. 确认User模型的通知触发逻辑

你的sendPasswordResetNotification方法逻辑是正确的,它负责触发通知,剩下的交给Laravel的通知系统处理即可:

public function sendPasswordResetNotification($token) {
    \Illuminate\Support\Facades\Log::info('sendPasswordResetNotification ran');
    $url = $this->clientBaseUrl . '/reset-password/' . $token;
    $this->notify(new ResetPasswordNotification(request('email'), $url));
}

错误原因解析

Laravel的通知系统中,MailChannel会接收toMail方法返回的对象,自动完成邮件发送的后续流程。当你手动调用Mail::send()时,toMail方法实际返回的是send()的执行结果(通常是true或null),而非包含邮件视图配置的合法对象。MailChannel尝试读取这个返回值的view属性时,自然会遇到null,进而抛出错误。

修改后,邮件会正常发送,同时通知系统能完成完整流程,不会再出现500错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:27:46