lotfio / mail-templator
邮件模板
0.2.0
2021-12-16 00:06 UTC
Requires
- php: >=8
Requires (Dev)
- dg/bypass-finals: ^1.3
- friendsofphp/php-cs-fixer: ^3
- phpunit/phpunit: ^9
- vimeo/psalm: ^4
This package is auto-updated.
Last update: 2024-09-16 06:31:33 UTC
README
MailTemplator(为您的电子邮件提供简单的模板)。
🔥 简介
MailTemplator 是一个轻量级的 PHP 包,可帮助您创建、编辑和自定义电子邮件模板。
📌 要求
- PHP >= 8
- PHPUnit >= 9(用于测试目的)
🚀 安装与使用
composer require lotfio/mail-templator
⚡ 测试
composer test-unit composer test-integration
☀️ 静态分析
composer psalm
✏️ 使用
- 在项目内部您喜欢的文件夹中创建自定义的邮件模板。
- 邮件模板类的名称应以 Template 结尾(MyCustomTemplate,MySecondTemplate)。
<?php namespace MyCustomMilTemplates; use MailTemplator\Templator; use MailTemplator\Contracts\TemplateInterface; final class MyTemplate extends Templator implements TemplateInterface { /** * render this template method * * @param array|null $variables * @return string */ public function render(?array $variables = null): string { return $this->loadTemplate()->parse($variables); } }
☝️ 可用的指令
- @LOGO@, @OPENLINE@, @HEADER@, @CONTENT@, @FOOTER@, @SUBFOOTER@, @POWEREDBY@
- 您可以使用设置器和受保护的属性来自定义和更新这些指令的内容
- 示例
<?php namespace MyCustomMilTemplates; use MailTemplator\Templator; use MailTemplator\Contracts\TemplateInterface; final class MyTemplate extends Templator implements TemplateInterface { // you can use a protected property protected string $logo = '<img src="https://mysite.com/logo.png">'; // or a protected setter protected function setLogo(): void { $this->logo = '<img src="https://mysite.com/logo.png">'; } // all other directives can be updated the same way }
✋ 自定义指令
<?php namespace MyCustomMilTemplates; use MailTemplator\Templator; use MailTemplator\Contracts\TemplateInterface; final class MyTemplate extends Templator implements TemplateInterface { // declare your custom directives protected string $content = 'Hello @USERNAME@ how are u ?'; }
- 然后您可以通过模板
setTemplate(new MyTemplate, ['username' => $username])
传递值
💪 自定义静态模板
- 默认情况下,templator 使用 免费响应式 HTML 邮件模板
- 您可以使用您自己的自定义静态模板
final class MyTemplate extends Templator implements TemplateInterface { /** * render this template method * * @param array|null $variables * @return string */ public function render(?array $variables = null): string { return $this->loadTemplate( 'link/to/your/static/tepmlate.html' )->parse($variables); } }
📧 使用 Templator 发送邮件
- 使用您的模板发送邮件
- 电子邮件主题将遵循模板类名称
// your mailer (PHPMailer or swift) // should implement MailAdapterInterface $customMailer = new class implements MailTemplator\Contracts\MailAdapterInterface{ public function send(string $to, string $subject, string $message): bool { // your mailer send should be wrapped here // $subject will be taken from template class name if no custom subject provided } } // create an instance of mail class $mail = new MailTemplator\Mail( $customMailer ); // set your template $mail->setTemplate( new MyCustomMilTemplates\MyTemplate ); // send mail with the given template $mail->send('to');
🚀 Laravel 集成
- 建议的目录结构应如下所示
-
邮件文件夹
- 模板文件夹
- 客户邮件器(PHPmailer 或 SwiftMailer)
-
请确保在 laravel AppServiceProvider 中注册您的自定义邮件器
public function register() { // bind custom mailer that implements MailAdapterInterface $this->app->bind(MailTemplator\Contracts\MailAdapterInterface::class, function($app){ return new CustomMailer; }); }
- 控制器方法中的示例用法
public function resetPassword(MailTemplator\Mail $mail) { // send mail $mail->setTemplate( new App\Mail\Templates\ResetPasswordTemplate )->send('email@site.com'); }
🚁 TODO
- 添加数据库模板支持
💻 贡献
- 感谢您考虑为 MailTemplator 做出贡献。所有贡献指南都列在 这里。
📃 变更日志
- 您可以在 变更日志 中找到。
🍺 支持开发
- 分享 MailTemplator 并让我们获得更多星标和贡献者。
- 如果这个项目帮助您减少了开发时间,您可以给我一杯咖啡 :) : Paypal. 💖
📋 许可证
- MailTemplator 是一个开源软件,根据 MIT 许可证 许可。