samcbdev / mail-notifier
基于用户设计的邮件模板生成,带有自定义动态变量
1.0.0
2024-07-11 14:43 UTC
README
始终如一的组织良好的邮件通知管理器
一个自定义Laravel包,用于动态邮件模板创建和数据库存储,并支持使用Laravel作业发送邮件。
功能
- 动态邮件模板:在数据库中创建、存储和管理动态邮件模板。
- 筛选:轻松检索具有自定义筛选条件的模板。
- 动态内容替换:替换模板中的动态字段。
- 发送邮件:支持CC、BCC和附件的邮件发送。
- 错误处理:处理找不到邮件模板的情况的异常。
技术栈
- Laravel:用于构建现代Web应用的PHP框架。
- Composer:PHP的依赖管理器。
- MySQL:用于存储邮件模板的关系型数据库管理系统。
安装
- Composer安装 运行以下命令通过Composer安装包
composer require samcbdev/mail-notifier
- 供应商发布 发布包的配置和其他必要文件
php artisan vendor:publish --tag="mail-notifier" - 迁移运行 运行数据库迁移以创建必要的表
php artisan migrate
使用指南
-
检索所有 以可选筛选获取所有邮件模板
Mailer::filterCondition()->get(); // With filters $filter = [ 'custom_fields->comp_id' => 1, ]; Mailer::filterCondition($filter)->get();
-
检索一个 以筛选获取单个邮件模板
$filter = [ 'custom_fields->comp_id' => 1, ]; Mailer::filterCondition($filter, true)->get(); // true returns first matching record
-
存储 存储新的邮件模板
$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);
-
编辑 编辑现有的邮件模板
$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);
-
删除 删除邮件模板
Mailer::deleteData(1); -
检查动态字符串 在邮件模板中检查动态字符串
$filter = [ 'template_unique_id' => 'FP', 'custom_fields->comp_id' => 1, ]; Mailer::filterCondition($filter, true)->checkDynamicFields();
-
替换动态字符串并发送邮件 替换邮件模板中的动态字段并发送邮件: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