hmones/laravel-digest

一个简单的包,用于每隔一段时间或达到一定阈值时创建并发送摘要邮件。

v2.3.0 2024-04-20 21:33 UTC

This package is not auto-updated.

Last update: 2024-09-21 23:54:04 UTC


README

Build Status Style CI Total Downloads Latest Stable Version License

一个简单的包,用于每隔一段时间或达到一定阈值时创建并发送摘要邮件。使用示例

  • 当网站上有新的100个注册时,向网站管理员发送摘要邮件。
  • 发送包含网站日志错误信息的每日邮件。
  • 向用户发送包含该月所有发表的帖子的月度通讯。

安装

通过Composer

composer require hmones/laravel-digest

配置

发布包配置

php artisan vendor:publish --tag=laravel-digest-config

配置文件包含以下参数

  • method: 您想使用的发送邮件的方法,它有两个值,queuesend
    • 环境变量: 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个新用户注册时,发送包含他们名字摘要的邮件。

  1. 通过将amount.enabled => truefrequency.enabled => false设置到config\laravel-digest.php中的配置变量来调整配置。
  2. 创建以下可邮寄的
<?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');
    }
}
  1. 创建一个渲染用户名字的视图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>
  1. 创建一个用户创建观察者,并在创建用户时添加一条记录到摘要
<?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);
    }
}
  1. 该包将处理其他所有事情,并在注册用户数量达到10时发送邮件。

变更日志

请参阅变更日志获取最近更改的更多信息。

测试

composer test

贡献

请参阅贡献指南.md以获取详细信息及待办事项清单。

安全性

如果您发现任何与安全相关的问题,请通过电子邮件联系作者,而不是使用问题跟踪器。

鸣谢

许可证

请参阅许可证文件以获取更多信息。