📅  最后修改于: 2023-12-03 15:02:35.198000             🧑  作者: Mango
Laravel 提供了 Markdown 邮件模板的功能,使得我们可以用更加方便、简洁的方式来创建邮件模板。同时,我们也可以使用 Blade 引擎中的模板语法,轻松地创建出我们需要的邮件模板。在这篇文章中,我们将介绍如何在 Laravel 中使用 Markdown 邮件模板来呈现 HTML 格式的电子邮件。
Laravel 的 Markdown 邮件模板需要以下依赖,所以我们需要确保这些依赖已经被正确地安装:
"laravel/framework": "^8.0",
"guzzlehttp/guzzle": "^7.0.1",
"league/commonmark": "^1.4",
"league/html-to-markdown": "^4.7",
"phpoffice/phpspreadsheet": "^1.14"
首先,我们需要创建一个 Markdown 邮件模板。这可以通过运行以下 Artisan 命令来完成:
php artisan make:mail WelcomeEmail --markdown=emails.welcome
这个命令会在 app/Mail 目录下创建一个名为 WelcomeEmail 的类,并且在 resources/views 目录下创建一个名为 emails/welcome.blade.php 的邮件模板。我们可以在这个模板中使用 Blade 模板语法,来创建我们需要的邮件内容。
接下来,我们需要将 Markdown 格式的邮件内容,转换成 HTML 格式。Laravel 提供了一个方便的 MarkDown 邮件渲染的方法。在这里,我们使用的 Laravel 版本是 8.x,所以我们可以使用以下的代码片段:
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('sender@example.com')
->markdown('emails.welcome');
}
这段代码中,我们在 build() 方法中调用 markdown() 方法,并且传入邮箱信息中使用的 Markdown 模板的名称。这样,Laravel 将会自动地把 Markdown 模板转换成 HTML 的邮件内容,并且将它们作为邮件信息的一部分。
最后,我们需要确保邮件信息中,邮件内容是以 HTML 格式呈现的。Laravel 在邮件类中提供了一个 viewData() 方法来设置视图数据,从而使得模板可以使用这些数据。我们可以使用这个方法来传递 HTML 格式的邮件内容。因此,我们可以在我们的 WelcomeEmail 类中用以下代码片段来设置邮件中的内容:
public function build()
{
return $this->from('sender@example.com')
->markdown('emails.welcome')
->with('htmlContent', $this->buildHtmlContent());
}
public function buildHtmlContent()
{
$content = (new HtmlConverter())->convertToHtml("## Welcome to Laravel Markdown Email");
return $content;
}
在 build() 方法中,除了 markdown() 方法外,我们还调用了 with() 方法来将 buildHtmlContent() 方法中生成的 HTML 内容传递给模板。
在 buildHtmlContent() 方法中,我们使用了 HtmlConverter() 来将 Markdown 格式的文本转换成 HTML 格式。这个方法的返回值就是我们需要的 HTML 内容。
在这篇文章中,我们介绍了如何在 Laravel 中使用 Markdown 邮件模板来呈现 HTML 格式的电子邮件。我们可以通过创建 Markdown 邮件模板,并使用 Blade 引擎的语法来创建邮件内容。我们还通过视图数据和 HtmlConverter() 方法来转换 Markdown 格式的邮件内容,生成 HTML 格式的电子邮件。