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

如何在无Mailable类的Laravel Blade视图中使用Markdown?

解决Laravel Blade中使用Markdown及x-mail::message组件报错的问题

1. 解决No hint path defined for [mail]报错

要使用<x-mail::message>这类Laravel邮件组件,需先将Mail的视图资源发布到项目目录:
执行以下Artisan命令:

php artisan vendor:publish --tag=laravel-mail

该命令会把Laravel内置的邮件组件视图复制到resources/views/vendor/mail路径下,自动注册mail命名空间的视图路径,直接解决hint path未定义的问题。

2. 在Blade中使用Markdown并渲染为HTML

根据是否需要Laravel邮件组件的预设样式,提供两种适配你需求的方案:

方案一:使用Laravel Markdown邮件视图(带组件样式)

  • 将原视图文件重命名为welcome.md.blade.php(.md.blade.php后缀标识这是Markdown格式的Blade视图),内容示例:
<x-mail::message>
# 您好,{{ $mail['to']['user_name'] }}

这是一封测试邮件,包含以下内容:

@foreach($mail['lines'] as $line)
- {{ $line }}
@endforeach

感谢您的使用,
团队敬上
</x-mail::message>
  • 在控制器中通过Laravel的Markdown类渲染视图为带样式的HTML:
use Illuminate\Mail\Markdown;

$to = [
    'user_name' => 'Test',
    'email' => 'xxx@email.com'
];

$mail = [
    'to' => $to,
    'lines' => ['Test 1', 'Test 2']
];

// 渲染Markdown视图为HTML
$markdownRenderer = app(Markdown::class);
$htmlContent = $markdownRenderer->render('emails.welcome', compact('mail'));

$data = [
    'to' => [$to],
    'mail_format' => 'html',
    'content' => $htmlContent
];

$payload = $this->payload( [$data] );

方案二:纯Markdown解析(无邮件组件样式)

如果不需要Laravel邮件组件的预设样式,仅需将Markdown文本转为HTML,可直接用Laravel集成的CommonMark解析器:

  • 在普通Blade视图(welcome.blade.php)中编写Markdown内容,并通过Markdown::parse()解析:
{!! \Illuminate\Support\Facades\Markdown::parse("
# 您好,{{ $mail['to']['user_name'] }}

这是测试内容:
- {{ $mail['lines'][0] }}
- {{ $mail['lines'][1] }}
") !!}
  • 控制器中仍用view()->render()获取最终HTML:
$content = view('emails.welcome', compact('mail'))->render();

额外说明

  • 确保项目已安装league/commonmark依赖(Laravel默认已包含),若未安装可执行:
composer require league/commonmark
  • 渲染后的HTML可直接作为payload发送给Zoho API,满足你的邮件处理需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 06:47:52