Laravel 5.5 为 Mailables 类型新增 theme 属性

在 Laravel 5.4 中 引入了 Markdown 邮件,使得我们在邮件中享受 Blade 模板的组件和 Slots 的同时,可以用 Markdown 语法编写电子邮件。

Laravel 自带了一系列预定义的组件,比如 headers, footers, buttons 以及 tables. 开发者可以很容易地在电子邮件模板中使用这些组件。

@component('mail::button', ['url' => $actionUrl, 'color' => $color])
    {{ $actionText }}
@endcomponent

开箱即用的 Markdown 邮件使用默认主题发送,这意味着你可以不用做任何额外的设计工作就能发送漂亮的电子邮件,并且也不用担心所发出的电子邮件在所有的电子邮件客户端中的兼容性。

然而,万一你想自己设计电子邮件的样式,让它与你的品牌更加匹配呢?在 Laravel 5.4 中,你可以通过创建自己的主题来达到这一目的。

首先按照以下路径创建自己的样式文件:

// my-theme.css 是你自定义主题的样式文件名
resources/views/vendor/mail/html/themes/my-theme.css`

然后在 mail.php 这个配置文件中修改 markdown 相关的配置项:

'markdown' => [
    'theme' => 'my-theme',
    'paths' => [
        resource_path('views/vendor/mail'),
    ],
],

配置完成以后,发出的所有 Markdown 邮件就会改用你的自定义主题。

到了 Laravel 5.5 中,同样做这件事情,就变得更加灵活方便了。你可以直接在一个 Mailable 的类中指定使用的主题。

首先还是和之前一样,创建一个自定义主题的样式文件,比如resources/views/vendor/mail/html/themes/my-theme.css.

接下来,不必修改配置文件,只要在你的 Mailable 类代码里指定 $theme 属性:

class SendInvoice extends Mailable
{
    protected $theme = 'my-theme';
    ...
}