notfff 693477b517 feat(GenerateModelAnnotation): 支持自定义Casts类型 7 mesiacov pred
..
Hooks 693477b517 feat(GenerateModelAnnotation): 支持自定义Casts类型 7 mesiacov pred
README.md 693477b517 feat(GenerateModelAnnotation): 支持自定义Casts类型 7 mesiacov pred

README.md

邮件模块文档

模块说明

邮件模块是一个统一的邮件发送系统,支持多种邮件服务商,包括SMTP、阿里云邮件推送等。

目录结构

app/Module/Mail/
├── Controllers/          # 控制器目录
├── Models/              # 模型目录
├── Repositorys/         # 仓库目录
├── Services/            # 服务目录
├── Validators/          # 验证器目录
├── Validations/         # 验证规则目录
├── Queues/              # 队列目录
├── Enums/               # 枚举目录
└── Commands/            # 命令目录

数据表设计

邮件模板表 (mail_templates)

字段名 类型 说明
id bigint 主键ID
name varchar(100) 模板名称
subject varchar(255) 邮件主题
content text 邮件内容
variables json 变量定义
status tinyint 状态:0禁用 1启用
created_at timestamp 创建时间
updated_at timestamp 更新时间

邮件记录表 (mail_logs)

字段名 类型 说明
id bigint 主键ID
template_id bigint 模板ID
to varchar(255) 收件人
cc varchar(255) 抄送人
bcc varchar(255) 密送人
subject varchar(255) 邮件主题
content text 邮件内容
data json 发送数据
status varchar(20) 状态
message varchar(255) 发送结果
sent_at timestamp 发送时间
created_at timestamp 创建时间
updated_at timestamp 更新时间

枚举定义

邮件状态 (MailStatus)

  • PENDING: 待发送
  • SENDING: 发送中
  • SENT: 已发送
  • FAILED: 发送失败

邮件服务商 (MailProvider)

  • SMTP: SMTP服务
  • ALIYUN: 阿里云邮件推送
  • SENDCLOUD: SendCloud
  • MAILGUN: Mailgun

核心服务

MailService

邮件核心服务,负责邮件的发送、模板管理等功能。

主要方法:

  • send(array $data): 发送邮件
  • sendBatch(array $data): 批量发送邮件
  • getTemplate(int $id): 获取模板
  • createTemplate(array $data): 创建模板
  • updateTemplate(int $id, array $data): 更新模板
  • deleteTemplate(int $id): 删除模板

队列处理

SendMailQueue

邮件发送队列,处理异步发送任务。

使用示例

// 发送邮件
$mailService = new MailService();
$mailService->send([
    'template_id' => 1,
    'to' => 'example@example.com',
    'data' => [
        'name' => '张三',
        'amount' => 100
    ]
]);

// 批量发送邮件
$mailService->sendBatch([
    [
        'template_id' => 1,
        'to' => 'example1@example.com',
        'data' => ['name' => '张三']
    ],
    [
        'template_id' => 1,
        'to' => 'example2@example.com',
        'data' => ['name' => '李四']
    ]
]);

注意事项

  1. 邮件发送采用队列异步处理
  2. 支持失败重试机制
  3. 支持变量替换
  4. 支持多服务商
  5. 支持发送频率限制
  6. 支持邮件黑名单
  7. 支持发送统计
  8. 支持HTML和纯文本格式
  9. 支持附件发送
  10. 支持抄送和密送