daylaborers / laravel-mjml
使用 Laravel Mailables 与 MJML 模板
Requires
- php: ^8.2.0
- ext-dom: *
- ext-libxml: *
- soundasleep/html2text: ^2.1
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 软件包以供使用。