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

Laravel邮件发送异常:模板变量未正确渲染显示

Laravel邮件模板Blade变量未解析的解决方案

以下是几个排查和解决该问题的关键点:

  • 检查视图文件后缀
    确保你的邮件视图文件后缀是.blade.php,比如contact.blade.php而非contact.php。Laravel仅会对带.blade.php后缀的文件解析Blade语法,普通.php文件会直接输出内容,变量不会被替换。

  • 确认邮件类的视图加载方式
    在Contact邮件类的build()方法里,必须使用view()方法加载模板,不能用text()或者直接返回HTML字符串:

    // 正确:加载Blade视图
    public function build()
    {
        return $this->view('emails.contact');
    }
    
    // 错误:仅加载纯文本,不解析Blade
    // return $this->text('emails.contact');
    

    如果用html()方法手动传入HTML内容,Blade语法不会被解析,这种情况建议改用view()加载模板文件。

  • 验证变量传递是否正确
    确保变量已正确传递到视图中:
    要么在view()后链式调用with()传递变量:

    public function build()
    {
        return $this->view('emails.contact')
                    ->with('name', $this->name)
                    ->with('message', $this->message);
    }
    

    要么把变量定义为邮件类的公共属性,Laravel会自动将这些属性共享到视图:

    class Contact extends Mailable
    {
        public $name;
        public $message;
    
        public function __construct($name, $message)
        {
            $this->name = $name;
            $this->message = $message;
        }
    
        public function build()
        {
            return $this->view('emails.contact');
        }
    }
    
  • 清除视图缓存
    视图缓存可能导致修改不生效,运行命令清除缓存:

    php artisan view:clear
    

    生产环境可以重新生成视图缓存:

    php artisan view:cache
    
  • 检查视图中的变量语法
    确认视图里的Blade变量写法正确,比如{{ $name }},不要漏掉变量前的$符号,也不要写错大括号格式。如果需要输出HTML内容,使用{!! $htmlContent !!}(注意防范XSS攻击)。

内容的提问来源于stack exchange,提问作者ademuyiwa adekunle idowu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:12:21