lotfio/mail-templator

邮件模板

0.2.0 2021-12-16 00:06 UTC

This package is auto-updated.

Last update: 2024-09-16 06:31:33 UTC


README

mail Preview

License PHP version Coverage Downloads

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]) 传递值

💪 自定义静态模板

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 集成

  • 建议的目录结构应如下所示

directory structure

  • 邮件文件夹

    • 模板文件夹
    • 客户邮件器(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 许可证 许可。