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

Laravel中使用to关键字发送邮件失效问题及解决方法

问题根源

你遇到的问题不是因为to是PHP保留关键字,而是Laravel的Mailable类本身已经提供了to()方法来设置邮件收件人。当你在自定义Mailable类中定义**公共属性$to**时,会干扰框架内部的收件人处理逻辑,导致邮件无法正确发送。

解决方案

有两种常见的修复方式,任选其一即可:

方式一:重命名公共属性

将公共属性$to重命名为其他名称(比如$recipient),然后在build()方法中调用框架的to()方法设置收件人:

class ProgressReportMailTest extends Mailable
{
    use Queueable, SerializesModels;

    public $recipient;
    public $emailBody;

    public function __construct($data)
    {
        $this->recipient = $data['to'];
        $this->emailBody = $data['emailbody'] ?? null;
    }

    public function build()
    {
        return $this->to($this->recipient)
                    ->view('your view');
    }
}

方式二:修改属性访问修饰符

如果不想重命名属性,可以将$to的访问修饰符改为protected或private,这样就不会和框架的to()方法冲突,同时在build()方法中调用to()方法传递收件人:

class ProgressReportMailTest extends Mailable
{
    use Queueable, SerializesModels;

    protected $to;
    public $emailBody;

    public function __construct($data)
    {
        $this->to = $data['to'];
        $this->emailBody = $data['emailbody'] ?? null;
    }

    public function build()
    {
        return $this->to($this->to)
                    ->view('your view');
    }
}
补充说明

Laravel Mailable的公共属性会被自动传递到视图中,但收件人、抄送人这类邮件核心配置,必须通过框架提供的to()、cc()、bcc()等方法来设置,不要用同名公共属性替代,否则会破坏框架的邮件处理流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:14:56