daylaborers/laravel-mjml

使用 Laravel Mailables 与 MJML 模板

1.0.1 2024-04-07 18:14 UTC

This package is auto-updated.

Last update: 2024-09-07 19:21:39 UTC


README

使用 MJML 和 Laravel Mailables 轻松构建响应式电子邮件。

MJML

MJML 是一种标记语言,由 MailJet 提供,可以减少开发响应式电子邮件所需的努力。有关更多信息,请参阅文档

安装

要安装此软件包,运行以下 composer 命令

composer require dayLaborers/laravel-mjml

在 composer 安装完软件包后,您可以使用 artisan 命令发布软件包配置

php artisan vendor:publish --tag=mjml-config

配置

有两种选项来渲染 MJML

  • cli: 使用 MJML npm 软件包
  • api: 使用公共 MJML API

可以通过环境变量 MJML_PROCEDURE 配置所需的过程。默认为 api。

API 过程

要通过 API 渲染 MJML,您必须设置以下环境变量

MJML_PROCEDURE=api
MJML_APP_ID=your-application-id
MJML_SECRET_KEY=your-secret-key

您也可以省略 MJML_PROCEDURE,因为默认值是 api。API 凭据可以通过这里请求。

CLI 过程

如果您不希望通过 API 渲染 MJML,则可以使用 NPM 软件包。您必须提前安装此软件包并设置以下环境变量

MJML_PROCEDURE=cli
MJML_CLI_PATH=path_to_your_mjml_package

MJML_CLI_PATH 的默认值是 node_modules/.bin/mjml,您只需设置此变量即可,如果您的 MJML 软件包路径不同。

示例

现在您可以使用 MJML 为您的 Laravel 邮件。例如,您可以使用 MJML 验证注册后的电子邮件。要在 Laravel App 中使用电子邮件验证,请参阅此处的文档。

将 MJML 模板添加到资源路径

resources\views\emails\notifications\verify.mjml.blade.php

模板文件必须具有 mjml.blade.php 扩展名。

<mjml>
    <mj-body>
        <mj-section>
            <mj-column>
                <mj-text font-size="20px" color="#F45E43">{{ $verificationUrl }}</mj-text>
            </mj-column>
        </mj-section>
    </mj-body>
</mjml>

如果您想使用 Blade 指令,您必须将其包装在 mj-raw 标签内

<mjml>
    <mj-body>
        <mj-section>
            <mj-column>
                <mj-raw>@if (true)</mj-raw>
                <mj-text font-size="20px" color="#F45E43">{{ $someVariable }}</mj-text>
                <mj-raw>@endif</mj-raw>
            </mj-column>
        </mj-section>
    </mj-body>
</mjml>

创建 Mailable

要创建 Mailable,请使用 artisan 命令:php artisan make:mail VerifyEmail

自定义类

在由 laravel 生成的 Mailable 类中,您现在必须调整以下内容

use DayLaborers\LaravelMjml\Mail\MjmlMailable;

class VerifyEmail extends MjmlMailable
{
    /**
     * @param string $verificationUrl
     */
    public function __construct(protected string $verificationUrl)
    {
        //
    }
    
    /**
     * @return Content
     */
    public function content(): Content
    {
        return new Content(
            view: 'emails.notifications.verify',
            with: [
                'verificationUrl' => $this->verificationUrl
            ]
        );
    }
}

当然,您可以传递更多变量并按 Laravel 文档中描述的方式自定义内容。

自定义电子邮件验证

打开 AppServiceProvider.php 类并添加以下内容

use Illuminate\Auth\Notifications\VerifyEmail;
use Illuminate\Support\ServiceProvider;
use App\Mail\VerifyEmail as MjmlVerifyEmail;

public function boot(): void
{
    // ...
    
    VerifyEmail::toMailUsing(function (object $notifiable, string $url) {
        return (new MjmlVerifyEmail($url))
            ->to($notifiable->email)
            ->subject('Verify Email Address');
    });
}

现在验证邮件使用 MJML 渲染。

完成了!您已成功安装并配置了 MJML 软件包以供使用。