6.4 KiB
6.4 KiB
阿里云短信服务配置完整指南
一、前期准备
1. 注册阿里云账号
访问 https://www.aliyun.com/ 注册账号并完成实名认证
2. 开通短信服务
- 登录阿里云控制台
- 搜索"短信服务"并开通
- 进入短信服务控制台:https://dysms.console.aliyun.com/
二、创建短信签名
1. 申请签名
- 进入【国内消息】->【签名管理】
- 点击【添加签名】
- 填写签名信息:
- 签名名称:红色思政学习平台
- 签名来源:网站(需要提供网站备案信息)
- 签名场景:验证码
- 签名说明:用于用户注册和登录验证
- 资质证明:上传相关资质文件
2. 审核时间
通常1-2个工作日审核完成
三、创建短信模板
1. 申请模板
- 进入【国内消息】->【模板管理】
- 点击【添加模板】
- 填写模板信息:
- 模板类型:验证码
- 模板名称:注册验证码
- 模板内容:您的验证码为:${code},该验证码10分钟内有效,请勿泄漏于他人!
2. 注意事项
- 模板必须包含变量:
${code} - 验证码模板必须说明有效期
- 必须包含防骗提示语
3. 审核时间
通常1-2个工作日审核完成
4. 获取模板CODE
审核通过后,会生成模板CODE,格式如:SMS_123456789
四、创建RAM用户(推荐)
1. 为什么使用RAM用户
- 主账号权限过大,不安全
- RAM用户可以精细化权限控制
- 方便管理多个应用的访问权限
2. 创建步骤
步骤1:进入访问控制
访问:https://ram.console.aliyun.com/users
步骤2:创建用户
- 点击【创建用户】
- 填写用户信息:
- 登录名称:school-news-sms
- 显示名称:红色思政短信服务
- 访问方式:勾选【OpenAPI调用访问】
步骤3:保存AccessKey
创建成功后,立即下载CSV文件保存AccessKey信息(只显示一次!)
- AccessKey ID:LTAI5txxxxxxxxxxxxxxxxxx
- AccessKey Secret:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
步骤4:授权
- 找到刚创建的用户
- 点击【添加权限】
- 搜索并添加权限:
AliyunDysmsFullAccess(短信服务完全访问权限)
五、配置项目
1. 在 application.yml 中配置
aliyun:
sms:
# 是否启用阿里云短信服务(true: 真实发送, false: 模拟模式)
enabled: true
# AccessKey ID(从RAM用户获取)
access-key-id: LTAI5txxxxxxxxxxxxxxxxxx
# AccessKey Secret(从RAM用户获取)
access-key-secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 短信签名名称(审核通过后的签名名称)
sign-name: 红色思政学习平台
# 验证码模板CODE(审核通过后的模板CODE)
template-code: SMS_123456789
# 区域ID
region-id: cn-hangzhou
2. 开发环境配置
开发环境建议使用模拟模式:
aliyun:
sms:
enabled: false # 关闭真实发送
access-key-id:
access-key-secret:
sign-name: 红色思政学习平台
template-code:
region-id: cn-hangzhou
模拟模式特点:
- 不会实际发送短信(节省费用)
- 验证码会在控制台日志中输出
- 适合开发和测试
3. 生产环境配置
生产环境使用真实发送:
aliyun:
sms:
enabled: true # 开启真实发送
access-key-id: ${ALIYUN_SMS_ACCESS_KEY_ID} # 从环境变量读取
access-key-secret: ${ALIYUN_SMS_ACCESS_KEY_SECRET} # 从环境变量读取
sign-name: 红色思政学习平台
template-code: SMS_123456789
region-id: cn-hangzhou
六、测试验证
1. 启动项目
cd schoolNewsServ/admin
mvn spring-boot:run
2. 测试发送验证码
使用 Postman 或 curl 测试:
curl -X POST http://localhost:8081/schoolNewsServ/auth/send-sms-code \
-H "Content-Type: application/json" \
-d '{"phone":"13800138000"}'
3. 查看日志
模拟模式:
【模拟发送】短信验证码,手机号: 13800138000, 验证码: 123456
真实发送:
阿里云短信发送成功,手机号: 13800138000, BizId: 123456789^0
七、费用说明
1. 收费标准
- 验证码短信:约 ¥0.045/条
- 通知短信:约 ¥0.045/条
- 推广短信:约 ¥0.055/条
2. 充值方式
- 进入短信服务控制台
- 点击【充值】
- 选择充值金额(建议先充值100元测试)
3. 余额查询
控制台首页可查看账户余额和使用情况
八、常见问题
1. 签名审核不通过
- 原因:资质不全、信息不符
- 解决:按审核意见补充资料,重新提交
2. 模板审核不通过
- 原因:内容不规范、缺少必要信息
- 解决:修改模板内容,确保包含:
- 验证码变量
${code} - 有效期说明
- 防骗提示
- 验证码变量
3. 发送失败:isv.BUSINESS_LIMIT_CONTROL
- 原因:短信发送频率过高
- 解决:
- 同一手机号1分钟内只能发送1条
- 同一手机号1小时内最多发送5条
- 同一手机号1天内最多发送10条
4. 发送失败:isv.AMOUNT_NOT_ENOUGH
- 原因:账户余额不足
- 解决:充值
5. 发送失败:isv.MOBILE_NUMBER_ILLEGAL
- 原因:手机号格式错误
- 解决:检查手机号是否正确
6. 代码中看不到验证码
- 原因:enabled=true 时真实发送,不会在日志输出
- 解决:
- 开发环境设置
enabled: false - 或查看手机短信
- 开发环境设置
九、安全建议
1. AccessKey 安全
- ❌ 不要将 AccessKey 直接写在代码中
- ❌ 不要将 AccessKey 提交到 Git 仓库
- ✅ 使用环境变量或配置中心
- ✅ 定期更换 AccessKey
- ✅ 使用 RAM 用户而非主账号
2. 防刷机制
系统已实现:
- ✅ 60秒发送频率限制
- ✅ 验证码10分钟有效期
- ✅ Redis存储验证码
- ✅ 手机号格式验证
建议增加:
- 图形验证码
- IP限流
- 黑名单机制
3. 监控告警
- 设置短信发送量告警
- 监控异常发送行为
- 定期查看短信发送报表
十、技术支持
- 阿里云短信服务文档:https://help.aliyun.com/product/44282.html
- 工单咨询:https://selfservice.console.aliyun.com/ticket/createIndex
- 电话客服:95187
最后提醒:
- 开发环境务必使用
enabled: false避免浪费 - AccessKey 信息要妥善保管
- 注意短信发送频率限制
- 定期查看账户余额