如何在Laravel 5.6中使用和自定义HTML电子邮件(不是markdown)?



所以我正在尝试在Laravel 5.6中发送HTML电子邮件,并遇到了一些有趣的问题。

首先,在自定义HTML内容甚至使用默认HTML布局时,文档非常糟糕。

https://laravel.com/docs/5.6/mail#writing-mailables

有一个"配置视图"部分,它告诉您只执行如下所示的操作。

return $this->view('emails.orders.shipped');

酷,我正在这样做。在我的刀片文件中,我刚刚

Here is a test message.

而且它发送得很好。但没有任何意义的是,该页面还说您可以运行以下工匠命令来生成默认的电子邮件模板。

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

它说:"邮件目录将包含一个html和一个markdown目录,每个目录都包含每个可用组件的各自表示。html 目录中的组件用于生成电子邮件的 HTML 版本。

该文档还深入介绍了如何自定义和使用这些降价模板。您只需在降价刀片文件的顶部调用@component('mail::message')...但我不想要降价。我只想要常规的HTML电子邮件。

@component('mail::message')仅在使用->view()时才使用->markdown()时不起作用。我也不能只做以下几点。

@extends('vendor.mail.html.layout')
Test message

正如它告诉我的那样,插槽是错误日志中未定义的变量。

不知道为什么,/vendor/mail/html/目录中的 layout.blade.php 文件包含以下内容...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<style>
@media only screen and (max-width: 600px) {
.inner-body {
width: 100% !important;
}
.footer {
width: 100% !important;
}
}
@media only screen and (max-width: 500px) {
.button {
width: 100% !important;
}
}
</style>
<table class="wrapper" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
<table class="content" width="100%" cellpadding="0" cellspacing="0">
{{ $header ?? '' }}
<!-- Email Body -->
<tr>
<td class="body" width="100%" cellpadding="0" cellspacing="0">
<table class="inner-body" align="center" width="570" cellpadding="0" cellspacing="0">
<!-- Body content -->
<tr>
<td class="content-cell">
{{ IlluminateMailMarkdown::parse($slot) }}
{{ $subcopy ?? '' }}
</td>
</tr>
</table>
</td>
</tr>
{{ $footer ?? '' }}
</table>
</td>
</tr>
</table>
</body>
</html>

不知道为什么它在电子邮件的 html 版本中调用Markdown::parse($slot)

如何在 html 电子邮件中扩展此视图?希望至少获得默认的 html 模板,而无需构建我自己的模板......

当你需要HTML时,你正在研究markdown组件。不要被生成的html目录所迷惑,因为它是您的降价电子邮件的HTML表示形式。

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

此命令仅用于将标准 Markdown 组件发布到应用程序,以便您可以自定义 Mardown 电子邮件的呈现方式(HTML 和纯文本)。你想要HTML电子邮件,而不是markdown,所以运行它对你来说毫无用处。

它在电子邮件的 html 版本中调用Markdown::parse($slot),因为这是将 Mardown 解析为 HTML 以发送 HTML 版本的 markdown 电子邮件的方法。您正在查看 Markdown 组件。

我使用HTML电子邮件,实际上很容易。

只需创建一个您应该(php artisan make:mail OrderShipped)的可邮寄内容即可。 只需在build()方法中执行return $this->view('your.email.layout');即可。

在您的your.email.layout中,只需像使用普通刀片模板一样@extend('your.email.master.layout')。做一个@section('content')或你给它起的任何名字,并设计你的边栏选项卡模板。

如果您有任何困难,请告诉我。

最新更新