5.8 KiB
5.8 KiB
邮件和短信服务配置说明
一、邮件服务配置
1. 在 application.yml 中添加邮件配置
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邮箱授权码步骤
- 登录QQ邮箱
- 点击【设置】->【账户】
- 找到【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】
- 开启【POP3/SMTP服务】或【IMAP/SMTP服务】
- 点击【生成授权码】
- 按照提示发送短信,获取16位授权码
- 将授权码填入配置文件的
password字段
3. 其他常用邮箱配置
163邮箱
spring:
mail:
host: smtp.163.com
port: 465
username: your-email@163.com
password: your-authorization-code
Gmail
spring:
mail:
host: smtp.gmail.com
port: 587
username: your-email@gmail.com
password: your-app-password
二、短信服务配置(支持多服务商)
1. 通用配置说明
系统支持多种短信服务商,通过 provider 配置切换:
- aliyun: 阿里云短信服务(已实现)
- tencent: 腾讯云短信服务(待实现)
2. 配置文件设置
在 application.yml 中添加以下配置:
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 申请阿里云短信服务
- 登录 阿里云控制台
- 开通【短信服务】产品
- 创建签名(需要企业资质或个人认证)
- 创建短信模板(验证码类型)
- 模板示例:
您的验证码为:${code},该验证码10分钟内有效,请勿泄漏于他人!
- 模板示例:
- 获取 AccessKey ID 和 AccessKey Secret
- 进入【访问控制】-> 【用户管理】
- 创建RAM用户并授予 AliyunDysmsFullAccess 权限
- 创建 AccessKey
3.2 阿里云配置示例
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. 腾讯云短信服务配置(待实现)
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服务已启动并配置正确:
spring:
redis:
host: localhost
port: 6379
password: your-redis-password
database: 0
四、API接口说明
1. 发送邮箱验证码
- 接口: POST /auth/send-email-code
- 参数:
{ "email": "user@example.com" } - 返回:
{ "code": 200, "message": "验证码已发送到邮箱", "data": true }
2. 发送手机验证码
- 接口: POST /auth/send-sms-code
- 参数:
{ "phone": "13800138000" } - 返回:
{ "code": 200, "message": "验证码已发送", "data": true }
3. 验证码特性
- 验证码有效期:10分钟
- 发送频率限制:60秒内只能发送一次
- 验证码长度:6位数字
- 验证码存储在Redis中,格式为:
- 邮箱验证码:
email:code:邮箱地址 - 手机验证码:
sms:code:手机号
- 邮箱验证码:
五、前端注册方式
前端支持三种注册方式:
- 用户名注册:输入用户名、学号、密码
- 手机号注册:输入手机号、验证码、学号、密码
- 邮箱注册:输入邮箱、验证码、学号、密码
用户可以通过标签页切换注册方式。
六、开发环境测试
在开发环境中:
- 邮件服务:如果未配置邮箱,EmailUtils会记录错误日志
- 短信服务:SmsUtils会在日志中输出验证码,不会实际发送
建议在开发环境中配置一个测试邮箱,以便完整测试邮件发送功能。