# EmailService **Repository Path**: panrobot/email-service ## Basic Information - **Project Name**: EmailService - **Description**: 一个专注于邮件服务的开源项目,提供可靠快速的邮件发送功能,有完善的账号池机制,可以选择策略来发送邮件,支持QQ邮箱、163邮箱等。持多种邮件协议,适用于各类应用集成,助力开发者高效构建邮件相关功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-05-29 - **Last Updated**: 2025-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 邮件服务平台(Email Service) 该项目是一个综合性的邮件服务平台,支持用户管理、邮箱账号管理、API密钥管理、邮件场景与模板管理、以及多种邮件发送策略。平台支持异步邮件发送、每日发送限制重置、以及通过Redis和MyBatis Plus进行数据持久化管理。 ## 功能概览 - **用户管理**:登录、注册、获取个人信息。 - **邮箱账号管理**:添加、修改、删除邮箱账号,支持分页查询。 - **API密钥管理**:创建、删除、分页查看API密钥。 - **邮件场景管理**:定义和管理邮件发送场景(如注册、找回密码等)。 - **邮件模板管理**:增删改查邮件模板,支持场景与模板的绑定。 - **邮件发送**:支持通过场景或模板发送邮件,可指定发送策略。 - **发送策略支持**: - 最少发送策略(LeastSentStrategy) - 轮询策略(RoundRobinStrategy) - 权重随机策略(WeightedRandomStrategy) ## 技术栈 - Spring Boot - MyBatis Plus - Sa-Token(权限控制) - Redis(缓存管理) - Java Mail Sender(邮件发送) - Maven - 多线程与异步处理 - 定时任务(Cron) ## 启动方式 1. 确保已安装JDK 1.8或以上版本。 2. 克隆项目到本地: ```bash git clone ``` 3. 进入项目目录并启动: ```bash cd emailservice mvn spring-boot:run ``` ## API 文档 完整的API文档请参考 [api_documentation.md](api_documentation.md)。 ## 使用说明 - **用户登录**:通过 `/user/login` 接口进行认证,获取访问令牌。 - **注册邮件场景**:使用 `/api/v1/registerScene` 接口向系统注册邮件场景。 - **发送邮件**:使用 `/api/v1/sendEmail` 接口,传入邮件模板、收件人、参数及发送策略(可选)。 - **管理邮箱账号**:通过 `/emailAccount` 系列接口添加、更新、查询邮箱账号。 - **管理API密钥**:通过 `/apiKey` 系列接口申请、删除、查询API密钥。 - **邮件模板测试**:使用 `/email/sendTestEmail` 接口发送测试邮件,确保模板渲染无误。 ## 模板变量渲染 邮件模板支持变量渲染,使用类似 `${key}` 的格式,发送时通过 `params` 参数传入变量值。 ## 密码加密说明 - 用户密码使用 MD5 加密存储。 - 前端 JavaScript 示例加密方法在文档中提供。 - 邮箱密码使用 AES 加密,工具类为 `PasswordEncryptUtil`。 ## 策略配置 策略配置在 `application.yml` 中,使用 `email.strategy.defaultStrategy` 设置默认策略。支持的策略包括: - least_sent - round_robin - weighted_random ## 项目结构 - `EmailServiceApplication.java`:Spring Boot 启动类。 - `controller`:各模块的REST接口。 - `service`:业务逻辑实现。 - `mapper`:数据库操作接口。 - `pojo`:数据传输对象(DTO)与实体类(Entity)。 - `exception`:全局异常处理器。 - `config`:系统配置类,包括异步处理、定时任务、Redis、MyBatis Plus等配置。 - `utils`:工具类,如ID生成器、加密工具。 - `strategy`:邮件账号选择策略实现。 ## 数据库 使用 MyBatis Plus 操作数据库,实体类与表名通过 `@TableName` 注解进行映射。 ## 扩展性 - 可通过实现 `EmailAccountSelectStrategy` 接口添加新的账号选择策略。 - 所有策略由 `EmailAccountStrategyManager` 统一管理。 ## 许可证 该项目遵循 MIT 许可证,具体请参见 LICENSE 文件。 ## 联系方式 如有任何问题,请提交 Issue 或联系项目维护人员。