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

Laravel发送邮件时Markdown视图未解析为HTML输出源码如何解决

Laravel Markdown邮件输出原始Blade源码修复方案

核心触发原因是调用->markdown()加载邮件视图时,Laravel未按预期走「Blade语法解析→Markdown转HTML」的渲染流程,按以下步骤逐一排查修复即可:

  • 修正视图文件后缀
    这是最高发的错误:将resources/views/emails/路径下的视图文件从companyactivation.blade.php重命名为companyactivation.blade.md。只有后缀为.blade.md的文件,Laravel才会识别为Markdown邮件模板,正常解析@component组件指令、{{ }}变量插值语法,不会直接输出原始文本。
  • 校验视图传参逻辑
    检查CompanyActivation邮件类,确保模板用到的所有变量都能被视图读取:
    public function build()
    {
        return $this->subject('Account activatie')
            ->markdown('emails.companyactivation', [
                // 模板用到的$company、$user变量,若为类的protected/private属性需在此手动传递
                'company' => $this->company,
                'user' => $this->user,
            ]);
    }
    
    如果变量定义为邮件类的public属性,可不用手动传参,Blade会自动读取;protected、private属性必须显式绑定到视图参数。
  • 清除缓存排除旧编译文件干扰
    在项目根目录执行以下Artisan命令,清除已编译的视图缓存和应用缓存:
    php artisan view:clear
    php artisan cache:clear
    
  • 修复邮件组件配置缺失问题
    如果上述操作完成后@component指令仍无法解析,执行命令重新发布Laravel官方邮件组件资源:
    php artisan vendor:publish --tag=laravel-mail
    
    发布完成后检查config/mail.php中的markdown配置项,确认组件路径未被错误修改,指向正确的resources/views/vendor/mail目录即可。

注意:不要直接将Markdown模板内容以字符串形式传入邮件构建方法,必须放在独立的.blade.md视图文件中,否则渲染流程不会触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:15:52