# Email 邮件服务模块

Email 是应用的核心邮件发送模块，提供完整的邮件发送技术能力，支持多种邮件模板和场景，为业务层提供可靠的邮件通信服务。

## 邮件发送功能

### sendEmail()
通用邮件发送方法，支持HTML和纯文本格式，提供灵活的邮件发送能力。

### sendVerificationCode()
发送验证码邮件，支持邮箱验证、密码重置、登录验证三种用途，自动选择对应模板。

### sendWelcomeEmail()
发送欢迎邮件，包含游戏特色介绍，用于新用户注册成功后的欢迎通知。

## 服务管理功能

### verifyConnection()
验证邮件服务连接状态，检查SMTP服务器连接和认证信息是否有效。

### isTestMode()
检查当前是否为测试模式，用于区分开发环境和生产环境的邮件发送行为。

## 使用的项目内部依赖

### Injectable (来自 @nestjs/common)
NestJS依赖注入装饰器，将EmailService注册为可注入的服务。

### Logger (来自 @nestjs/common)
NestJS日志服务，用于记录邮件发送过程和错误信息。

### ConfigService (来自 @nestjs/config)
NestJS配置服务，用于读取邮件服务相关的环境变量配置。

### nodemailer (来自 第三方库)
Node.js邮件发送库，提供SMTP传输器和邮件发送核心功能。

### EmailOptions (本模块)
邮件发送选项接口，定义邮件的基本参数（收件人、主题、内容等）。

### VerificationEmailOptions (本模块)
验证码邮件选项接口，定义验证码邮件的特定参数（邮箱、验证码、用途等）。

### EmailSendResult (本模块)
邮件发送结果接口，定义发送结果的状态信息（成功状态、测试模式、错误信息）。

## 核心特性

### 双模式支持
- 生产模式：使用真实SMTP服务器发送邮件到用户邮箱
- 测试模式：输出邮件内容到控制台，不真实发送邮件
- 自动检测：根据环境变量配置自动切换运行模式

### 多模板支持
- 邮箱验证模板：蓝色主题，用于用户注册时的邮箱验证
- 密码重置模板：红色主题，用于密码找回功能
- 登录验证模板：蓝色主题，用于验证码登录
- 欢迎邮件模板：绿色主题，用于新用户注册成功通知

### 配置灵活性
- 支持多种SMTP服务商（Gmail、163邮箱、QQ邮箱等）
- 可配置主机、端口、安全设置、认证信息
- 提供合理的默认配置值，简化部署过程
- 支持自定义发件人信息和邮件签名

### 错误处理机制
- 完善的异常捕获和错误日志记录
- 网络错误、认证错误的分类处理
- 发送失败时返回详细的错误信息
- 连接验证功能确保服务可用性

## 潜在风险

### 配置依赖风险
- 邮件服务依赖外部SMTP服务器配置，配置错误会导致发送失败
- 未配置邮件服务时自动降级为测试模式，生产环境需要确保正确配置
- 建议在应用启动时验证邮件服务配置，在部署前进行连接测试

### 网络连接风险
- SMTP服务器连接可能因网络问题、防火墙设置等原因失败
- 第三方邮件服务可能有发送频率限制或IP被封禁的风险
- 建议配置多个备用SMTP服务商，实现故障转移机制

### 模板维护风险
- HTML邮件模板较长且包含内联样式，维护时容易出错
- 模板中的品牌信息、联系方式等内容需要定期更新
- 建议将邮件模板提取到独立的模板文件中，便于统一管理和维护

### 安全风险
- SMTP认证信息存储在环境变量中，需要确保配置文件安全
- 邮件内容可能包含敏感信息（验证码等），需要注意传输安全
- 建议使用加密连接（TLS/SSL）和强密码策略