Files
schoolNews/schoolNewsServ/auth/邮件服务配置说明.md

243 lines
5.8 KiB
Markdown
Raw Normal View History

2025-11-03 13:37:55 +08:00
# 邮件和短信服务配置说明
## 一、邮件服务配置
### 1. 在 application.yml 中添加邮件配置
```yaml
spring:
mail:
# 邮件服务器地址以QQ邮箱为例
host: smtp.qq.com
# 端口号
port: 587
# 发件人邮箱
username: your-email@qq.com
# 授权码(不是邮箱密码)
password: your-authorization-code
# 编码
default-encoding: UTF-8
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
```
### 2. 获取QQ邮箱授权码步骤
1. 登录QQ邮箱
2. 点击【设置】->【账户】
3. 找到【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】
4. 开启【POP3/SMTP服务】或【IMAP/SMTP服务】
5. 点击【生成授权码】
6. 按照提示发送短信获取16位授权码
7. 将授权码填入配置文件的 `password` 字段
### 3. 其他常用邮箱配置
#### 163邮箱
```yaml
spring:
mail:
host: smtp.163.com
port: 465
username: your-email@163.com
password: your-authorization-code
```
#### Gmail
```yaml
spring:
mail:
host: smtp.gmail.com
port: 587
username: your-email@gmail.com
password: your-app-password
```
## 二、短信服务配置(支持多服务商)
### 1. 通用配置说明
系统支持多种短信服务商,通过 `provider` 配置切换:
- **aliyun**: 阿里云短信服务(已实现)
- **tencent**: 腾讯云短信服务(待实现)
### 2. 配置文件设置
`application.yml` 中添加以下配置:
```yaml
sms:
# 是否启用短信服务true: 真实发送, false: 模拟模式)
enabled: false
# 短信服务商aliyun: 阿里云, tencent: 腾讯云)
provider: aliyun
# AccessKey ID从服务商控制台获取
access-key-id: LTAI5txxxxxxxxxxxxxxxx
# AccessKey Secret从服务商控制台获取
access-key-secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 短信签名名称(需要在服务商平台申请)
sign-name: 红色思政学习平台
# 验证码模板CODE需要在服务商平台申请
template-code: SMS_123456789
# 区域ID阿里云cn-hangzhou腾讯云ap-guangzhou
region-id: cn-hangzhou
```
### 3. 阿里云短信服务配置
#### 3.1 申请阿里云短信服务
1. 登录 [阿里云控制台](https://www.aliyun.com/)
2. 开通【短信服务】产品
3. 创建签名(需要企业资质或个人认证)
4. 创建短信模板(验证码类型)
- 模板示例:`您的验证码为:${code}该验证码10分钟内有效请勿泄漏于他人`
5. 获取 AccessKey ID 和 AccessKey Secret
- 进入【访问控制】-> 【用户管理】
- 创建RAM用户并授予 AliyunDysmsFullAccess 权限
- 创建 AccessKey
#### 3.2 阿里云配置示例
```yaml
sms:
enabled: true
provider: aliyun
access-key-id: LTAI5txxxxxxxxxxxxxxxx
access-key-secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
sign-name: 红色思政学习平台
template-code: SMS_123456789
region-id: cn-hangzhou
```
#### 3.3 费用说明
- **验证码短信**:约 ¥0.045/条
- **通知短信**:约 ¥0.045/条
详细配置步骤请查看:`阿里云短信配置示例.md`
### 4. 腾讯云短信服务配置(待实现)
```yaml
sms:
enabled: true
provider: tencent
access-key-id: your-secret-id
access-key-secret: your-secret-key
sign-name: 红色思政学习平台
template-code: 123456
region-id: ap-guangzhou
```
### 5. 开发模式说明
如果 `enabled` 设置为 `false` 或未配置 AccessKey系统会自动使用**模拟模式**
- ✅ 不会实际发送短信
- ✅ 在日志中输出验证码内容
- ✅ 适合开发和测试环境
- ✅ 不产生任何费用
**推荐**:开发环境始终使用 `enabled: false`
### 6. 模板参数说明
验证码模板需要包含 `${code}` 变量系统会自动替换为6位数字验证码。
模板示例:
```
【红色思政学习平台】您的验证码为:${code}该验证码10分钟内有效请勿泄漏于他人
```
### 7. 注意事项
- **AccessKey 安全**:不要将 AccessKey 提交到代码仓库
- **短信限流**:各服务商都有频率限制,注意防刷
- **验证码有效期**:建议在模板中明确说明
- **测试建议**:开发环境使用 `enabled: false` 避免浪费
## 三、Redis配置
验证码存储在Redis中确保Redis服务已启动并配置正确
```yaml
spring:
redis:
host: localhost
port: 6379
password: your-redis-password
database: 0
```
## 四、API接口说明
### 1. 发送邮箱验证码
- **接口**: POST /auth/send-email-code
- **参数**:
```json
{
"email": "user@example.com"
}
```
- **返回**:
```json
{
"code": 200,
"message": "验证码已发送到邮箱",
"data": true
}
```
### 2. 发送手机验证码
- **接口**: POST /auth/send-sms-code
- **参数**:
```json
{
"phone": "13800138000"
}
```
- **返回**:
```json
{
"code": 200,
"message": "验证码已发送",
"data": true
}
```
### 3. 验证码特性
- 验证码有效期10分钟
- 发送频率限制60秒内只能发送一次
- 验证码长度6位数字
- 验证码存储在Redis中格式为
- 邮箱验证码:`email:code:邮箱地址`
- 手机验证码:`sms:code:手机号`
## 五、前端注册方式
前端支持三种注册方式:
1. **用户名注册**:输入用户名、学号、密码
2. **手机号注册**:输入手机号、验证码、学号、密码
3. **邮箱注册**:输入邮箱、验证码、学号、密码
用户可以通过标签页切换注册方式。
## 六、开发环境测试
在开发环境中:
- 邮件服务如果未配置邮箱EmailUtils会记录错误日志
- 短信服务SmsUtils会在日志中输出验证码不会实际发送
建议在开发环境中配置一个测试邮箱,以便完整测试邮件发送功能。