hmones / laravel-digest
一个简单的包,用于每隔一段时间或达到一定阈值时创建并发送摘要邮件。
v2.3.0
2024-04-20 21:33 UTC
Requires
- php: ^7.4|^8.0|^8.2
- ext-json: *
- illuminate/support: ~7|~8|~9|~10|^11.0
Requires (Dev)
- orchestra/testbench: ~5|~6|~7|^9.0
- phpunit/phpunit: ~9.0|^10.5
This package is not auto-updated.
Last update: 2024-09-21 23:54:04 UTC
README
一个简单的包,用于每隔一段时间或达到一定阈值时创建并发送摘要邮件。使用示例
- 当网站上有新的100个注册时,向网站管理员发送摘要邮件。
- 发送包含网站日志错误信息的每日邮件。
- 向用户发送包含该月所有发表的帖子的月度通讯。
安装
通过Composer
composer require hmones/laravel-digest
配置
发布包配置
php artisan vendor:publish --tag=laravel-digest-config
配置文件包含以下参数
method
: 您想使用的发送邮件的方法,它有两个值,queue
或send
- 环境变量:
DIGEST_METHOD
- 默认值:
queue
- 环境变量:
frequency.enabled
是否您想启用每隔一定时间发送邮件,如果不启用,则不会安排邮件- 环境变量:
DIGEST_FREQUENCY_ENABLED
- 默认值:
true
- 环境变量:
frequency.daily.time
如果启用频率,则此参数用于发送每日摘要邮件的时间- 环境变量:
DIGEST_DAILY_TIME
- 默认值:
00:00
- 环境变量:
frequency.weekly.time
如果启用频率,则此参数用于发送每周摘要邮件的时间- 环境变量:
DIGEST_WEEKLY_TIME
- 默认值:
00:00
- 环境变量:
frequency.monthly.time
如果启用频率,则此参数用于发送每月摘要邮件的时间- 环境变量:
DIGEST_MONTHLY_TIME
- 默认值:
00:00
- 环境变量:
frequency.weekly.day
如果启用频率,则此参数用于发送每周摘要邮件的日期(1是星期日,7是星期六)- 环境变量:
DIGEST_WEEKLY_DAY
- 默认值:
1
- 环境变量:
frequency.monthly.day
如果启用频率,则此参数用于发送每月摘要邮件的日期- 环境变量:
DIGEST_MONTHLY_DAY
- 默认值:
1
- 环境变量:
frequency.custom
您可以设置尽可能多的自定义频率定义,该参数采用有效的cron表达式amount.enabled
是否您想启用每批一定数量时发送邮件- 环境变量:
DIGEST_AMOUNT_ENABLED
- 默认值:
true
- 环境变量:
amount.threshold
发送摘要邮件的电子邮件数量。- 环境变量:
DIGEST_AMOUNT_THRESHOLD
- 默认值:
10
- 环境变量:
使用方法
要创建电子邮件摘要,请确保您首先有以下内容
- 一个可邮寄的,配置了发送地址、电子邮件视图和主题。
- 可邮寄的应接受其构造函数中的数组变量,此数组变量将包含传递给每个电子邮件的所有记录数据,这些数据将被自动连接并由包发送到可邮寄的,以编译视图以发送摘要。
示例:每次网站上有10个新用户注册时,发送包含他们名字摘要的邮件。
- 通过将
amount.enabled => true
和frequency.enabled => false
设置到config\laravel-digest.php
中的配置变量来调整配置。 - 创建以下可邮寄的
<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class UserCreatedMailable extends Mailable { use Queueable, SerializesModels; public $data; public function __construct(array $data) { $this->data = $data; } public function build(): Mailable { return $this->view('userCreated')->subject('10 new users are registered')->to('email@test.com'); } }
- 创建一个渲染用户名字的视图
resources\userCreated.blade.php
<html> <head><title>Sample Email</title></head> <body> <h1>The following users have just registered:</h1> <ol> @foreach($data as $record) <li>{{$record['name']}}</li> @endforeach </ol> </body> </html>
- 创建一个用户创建观察者,并在创建用户时添加一条记录到摘要
<?php namespace App\Observers; use App\Mail\UserCreatedMailable; use App\Models\User; use Hmones\LaravelDigest\Facades\Digest; class UserObserver { public function created(User $user) { $batchId = 'userCreated'; $mailable = UserCreatedMailable::class; //Data can also be set to null if you don't want to attach any data to the email $data = ['name' => $user->name]; //Frequency can take values such as daily, weekly, monthly, custom or an integer threshold 10, 20 ...etc $frequency = 10; Digest::add($batchId, $mailable, $data, $frequency); } }
- 该包将处理其他所有事情,并在注册用户数量达到10时发送邮件。
变更日志
请参阅变更日志获取最近更改的更多信息。
测试
composer test
贡献
请参阅贡献指南.md以获取详细信息及待办事项清单。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件联系作者,而不是使用问题跟踪器。
鸣谢
许可证
请参阅许可证文件以获取更多信息。