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

Laravel邮件发送报错:调用未定义方法Illuminate\Mail\PendingMail::sent()

解决Laravel邮件发送报错:PendingMail::sent()方法未定义

嘿,一眼就瞅出问题所在了——你调用了一个Laravel邮件系统里根本不存在的方法!Illuminate\Mail\PendingMail类没有sent()这个方法,正确的发送方法是send()。

第一步:修正UserController里的核心错误

把你原来的代码:

Mail::to($user->email)->sent(new VarificationEmail($user));

直接改成:

Mail::to($user->email)->send(new VarificationEmail($user));

(顺带提一句:你拼写的VarificationEmail应该是VerificationEmail,虽然这不是当前报错的原因,但建议修正拼写,避免后续出现类找不到的问题)

第二步:确认邮件类(你的MailController)的正确性

看起来你把邮件类命名成了MailController?其实Laravel里发送邮件的类应该是继承Mailable的邮件类,比如VerificationEmail,不过你的代码逻辑本身没大问题,只是有几个细节要注意:

  • 确保类文件的命名和类名一致(比如VerificationEmail.php放在app/Mail目录下)
  • 确认Email.verification视图存在于resources/views/Email/verification.blade.php路径
  • 保证传入的$user对象确实有uname和email_verification_token这两个属性

给你一个标准的邮件类示例(修正拼写后):

namespace App\Mail;

use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class VerificationEmail extends Mailable
{
    use Queueable, SerializesModels;

    public $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public function build()
    {
        return $this->view('Email.verification')
            ->with([
                'uname' => $this->user->uname,
                'token' => $this->user->email_verification_token,
            ])
            ->bcc('pmsaidur@gmail.com')
            ->subject('Test');
    }
}

额外小提示

如果你是想在邮件发送完成后做一些操作,别想着用不存在的sent()方法,可以监听Laravel自带的MessageSent事件,在事件监听器里处理后续逻辑哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 10:27:32