samcbdev/mail-notifier

基于用户设计的邮件模板生成,带有自定义动态变量

1.0.0 2024-07-11 14:43 UTC

This package is auto-updated.

Last update: 2024-09-11 15:34:49 UTC


README

始终如一的组织良好的邮件通知管理器

一个自定义Laravel包,用于动态邮件模板创建和数据库存储,并支持使用Laravel作业发送邮件。

功能

  • 动态邮件模板:在数据库中创建、存储和管理动态邮件模板。
  • 筛选:轻松检索具有自定义筛选条件的模板。
  • 动态内容替换:替换模板中的动态字段。
  • 发送邮件:支持CC、BCC和附件的邮件发送。
  • 错误处理:处理找不到邮件模板的情况的异常。

技术栈

  • Laravel:用于构建现代Web应用的PHP框架。
  • Composer:PHP的依赖管理器。
  • MySQL:用于存储邮件模板的关系型数据库管理系统。

安装

  1. Composer安装 运行以下命令通过Composer安装包
    composer require samcbdev/mail-notifier
  2. 供应商发布 发布包的配置和其他必要文件
    php artisan vendor:publish --tag="mail-notifier"
  3. 迁移运行 运行数据库迁移以创建必要的表
    php artisan migrate

使用指南

  1. 检索所有 以可选筛选获取所有邮件模板

    Mailer::filterCondition()->get();
    
    // With filters
    $filter = [
        'custom_fields->comp_id' => 1,
    ];
    Mailer::filterCondition($filter)->get();
  2. 检索一个 以筛选获取单个邮件模板

    $filter = [
        'custom_fields->comp_id' => 1,
    ];
    Mailer::filterCondition($filter, true)->get(); // true returns first matching record
  3. 存储 存储新的邮件模板

    $data = [
        'template_unique_id' => 'FP',
        'custom_fields' => [ // here custom field is json column
            'comp_id' => 1
        ],
        'title' => 'Title',
        'subject' => 'Subject',
        'content' => 'Content'
    ];
    
    $setUnique = ['template_unique_id', 'custom_fields->comp_id'];
    
    Mailer::storeData($setUnique, $data);
  4. 编辑 编辑现有的邮件模板

    $data = [
        'template_unique_id' => 'FP',
        'custom_fields' => [
            'comp_id' => 1
        ],
        'title' => 'Title',
        'subject' => 'Subject',
        'content' => 'Content'
    ];
    
    $setUnique = ['template_unique_id', 'custom_fields->comp_id'];
    
    Mailer::editData(1, $setUnique, $data);
  5. 删除 删除邮件模板

    Mailer::deleteData(1);
  6. 检查动态字符串 在邮件模板中检查动态字符串

    $filter = [
        'template_unique_id' => 'FP',
        'custom_fields->comp_id' => 1,
    ];
    Mailer::filterCondition($filter, true)->checkDynamicFields();
  7. 替换动态字符串并发送邮件 替换邮件模板中的动态字段并发送邮件:setFromAddress是可选的。如果需要更改发件人电子邮件地址和邮件,请在senMail函数之前添加该函数。

    $filter = [
        'template_unique_id' => 'FP',
        'custom_fields->comp_id' => 1,
    ];
    
    $contentArray = [
        '[[content_key]]' => 'replacing string against the key',
    ];
    
    $subjectArray = [
        '[[subject_key]]' => 'replacing string against the key'
    ];
    
    $fromAddr = [
        'name' => 'testing',
        'email' => 'from@web.php'
    ];
    
    $to = ['recipient@example.com'];
    
    $ccOrBcc = [
        'cc' => ['cc1@example.com', 'cc2@example.com'],
        'bcc' => ['bcc1@example.com']
    ];
    
    $attachments = [
        storage_path('/app/public/img.jpg'),
        storage_path('/app/public/pdf.pdf')
    ];
    
    try {
        $ret = Mailer::filterCondition($filter, true)
            ->replaceDynamicFields($contentArray, $subjectArray)
            ->setFromAddress($fromAddr)
            ->sendMail($to, $ccOrBcc, $attachments);
    } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) {
        return response()->json([
            'error' => 'Mail Not Send',
            'message' => $e->getMessage()
        ], 404);
    }

开发

打开您喜欢的终端并运行此命令。

php artisan queue:work

许可

MIT