statikbe / laravel-mail-template-engine
为 Laravel 定制的邮件模板
Requires
- php: ^8.0|^8.1
- illuminate/bus: ^10.0
- illuminate/console: ^10.0
- illuminate/mail: ^10.0
- spatie/laravel-translatable: ^6.0
This package is auto-updated.
Last update: 2024-09-15 10:11:35 UTC
README
Laravel 邮件模板引擎可以使您为事务性邮件创建邮件模板。这些邮件模板可以包含内容和接收者变量,当触发邮件时可以填充。
此包与我们的Laravel Nova 邮件编辑器协同工作,它提供了一个用户界面,允许内容管理员编辑翻译。
工作原理
该包结合了3组不同的数据来发送事务性邮件。
- 首先,有邮件类:在这里您定义一个名称、内容变量和接收者变量。
- 接下来,您将邮件模板存储在数据库中,您可以使用 Laravel Nova 邮件编辑器 在 Nova 中执行此操作。或者,您可以编写自己的接口以保存模板。
- 最后,您调用邮件类并填写其变量(内容和接收者)。此时,引擎将寻找使用此类的所有模板,用提供的变量填充它们,并发送给选定的接收者。
安装
- 使用 composer 安装
composer require statikbe/laravel-mail-template-engine
- 发布邮件模板迁移和配置
php artisan vendor:publish --tag=mail-template-engine
- 运行邮件模板迁移
php artisan migrate
如何使用
邮件类
此类将决定您的邮件模板中哪些内容变量可用,并将用于决定何时发送邮件。
您可以使用以下命令生成邮件
php artisan make:mail-class SomeEventMail
创建邮件类后,将其添加到配置 mail-template-engine.php
中的邮件。
Mail 类的一个示例可以在 src/Mails/ResetPassword.php
中找到。
<?php namespace Statikbe\LaravelMailEditor\Mails; use Statikbe\LaravelMailEditor\AbstractMail; class ResetPasswordMail extends AbstractMail { public static function name(){ return __('ResetPasswordTemplate'); } public static function getContentVariables(){ return [ 'url' => __('Reset password URL'), ]; } public static function getRecipientVariables(){ return [ 'user' => __('User'), ]; } }
邮件模板
邮件模板存储在数据库中。它使用模型 Statikbe\LaravelMailEditor\MailTemplate
并可以像任何其他模型一样创建。邮件模板可以是本地化的,我们使用 Spatie 的可翻译包来实现这一点。更多信息可以在他们的页面找到:Laravel Translatable。
您可以使用相应邮件类的键将变量数据放入邮件模板中。
MailTemplate
模型包括
如果您正在使用 Nova,则可以使用 Nova 邮件编辑器:一个用于编辑和创建邮件模板的工具。
调用邮件类
为了发送邮件,您需要提供内容和接收者变量,然后发送邮件对象。
邮件对象现在将在数据库中寻找使用此邮件类的任何邮件模板,构建它并发送邮件。
示例
use Statikbe\LaravelMailEditor\Mails\ResetPasswordMail; $contentVars = [ 'nl' => [ //Optional wrap with locale 'url' => $verificationUrl, ], ]; $recipientVars = [ 'user' => [ //Use an array with mail and optional locale [ 'mail' => $user->email, 'locale' => 'en', ], //Or use an object $user ] ]; $attachments = [ 'nl' => [ //Optional wrap with locale 'user' => [ //Using laravel mail attach functionality [ 'path' => $path, 'options' => [ 'as' => 'factuur.pdf', 'mime' => 'application/pdf', ] ], //Or add an entire file $file ], ] ]; $mail = new ResetPasswordMail(); $mail->sendMail($contentVars, $recipientVars);
内容变量
在此数组中,您为每个在邮件模板(s)中使用的键分配值。您在邮件类中的 getContentVariables
中定义接收者。将内容变量用区域设置作为键包装是可选的。
接收者变量
在此数组中,您为邮件模板(s)中的每个接收者分配邮件和区域设置。您在邮件类中的 getRecipientVariables
中定义接收者。有关添加接收者变量的更多选项,请参阅 \Statikbe\LaravelMailEditor\AbstractMail::formatRecipientArray
。
附件变量
在这个数组中,您为邮件模板中的每个收件人分配附件。您在邮件类中的 getRecipientVariables
方法中定义收件人。有关如何添加收件人变量的更多选项,请查看 \Statikbe\LaravelMailEditor\AbsractMail::formatRecipientArray
。将附件包裹在以区域设置为键的包装中是可选的。
样式
该软件包提供的默认设计来自这里。您可以发布视图并对其进行自定义!
php artisan vendor:publish --provider="Statikbe\LaravelMailEditor\MailEditorServiceProvider" --tag=views
您可以通过在配置中的 designs
数组中添加它们来提供您自己的设计。设计是存储您渲染引擎视图的视图目录,例如,默认的HTML引擎期望有一个名为 html.blade.php
的视图。
配置
您可以通过运行以下命令来发布配置
php artisan vendor:publish --tag=mail-template-engine
以下配置字段可用
TODO 记录配置
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。