243 lines
5.8 KiB
Markdown
243 lines
5.8 KiB
Markdown
|
|
# 邮件和短信服务配置说明
|
|||
|
|
|
|||
|
|
## 一、邮件服务配置
|
|||
|
|
|
|||
|
|
### 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会在日志中输出验证码,不会实际发送
|
|||
|
|
|
|||
|
|
建议在开发环境中配置一个测试邮箱,以便完整测试邮件发送功能。
|
|||
|
|
|