阿里云短信集成(AccessKeyId和secret获取)
2026/9/19 13:38:57 网站建设 项目流程
代码实现
1、新建springboot项目
2、导入依赖
<!--导入阿里云短信依赖--> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.25</version> </dependency> <!--阿里json--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> <!--短信过期需要Redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>

3、application.properties(配置Redis)

注:Redis服务需要启动
server.port=9090 spring.redis.host=47.99.33.80 spring.redis.port=6379

4、controller层

package com.wt.controller; import com.aliyuncs.utils.StringUtils; import com.wt.service.SendSms; import io.netty.util.internal.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.UUID; import java.util.concurrent.TimeUnit; @RestController @CrossOrigin //跨域支持 public class SmsApiController { @Autowired private SendSms sendSms; @Autowired private RedisTemplate<String,String> redisTemplate; @GetMapping("/send/{phone}") public String code(@PathVariable("phone")String phone){ //调用发送方法(模拟真实业务Redis) String code = redisTemplate.opsForValue().get(phone); if(!StringUtils.isEmpty(code)){ return phone + ":" + code + "已存在,还没有过期"; } //生成验证码并存储到Redis中 code = UUID.randomUUID().toString().substring(0, 4); HashMap<String,Object> param = new HashMap<>(); param.put("code",code); boolean isSuccess = sendSms.send(phone, "阿里云申请的模板编码", param); if(isSuccess){ //保存至Redis并设置五分钟过期 redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES); return "发送成功!"; }else { return "发送失败!"; } } }

5、service和impl

package com.wt.service; import java.util.Map; public interface SendSms { boolean send(String phoneNum, String templateCode, Map<String,Object>code); }
package com.wt.service.impl; import com.alibaba.fastjson.JSONObject; import com.aliyuncs.CommonRequest; import com.aliyuncs.CommonResponse; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.http.MethodType; import com.aliyuncs.profile.DefaultProfile; import com.wt.service.SendSms; import org.springframework.stereotype.Service; import java.util.Map; @Service public class SendSmsImpl implements SendSms { @Override public boolean send(String phoneNum, String templateCode, Map<String, Object> code) { //连接阿里云 //accessKeyId:LTAI5tFgHDjZuP4FPNYGkBup //secret:stVsFWwWpBlqIHxpNPfAYnlJPAdSWD DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI5tFgHDjZuP4FPNYGkBup", "stVsFWwWpBlqIHxpNPfAYnlJPAdSWD"); IAcsClient client = new DefaultAcsClient(profile); //构建请求 CommonRequest request = new CommonRequest(); request.setSysMethod(MethodType.POST); request.setSysDomain("dysmsapi.aliyuncs.com"); request.setSysVersion("2017-05-25"); request.setSysAction("SendSms"); //自定义参数(手机号,验证码,签名,模板) //需要发送的手机号 request.putQueryParameter("PhoneNumbers", phoneNum); //阿里云申请的签名名称(一般是固定签名) request.putQueryParameter("SignName", "阿里云申请的签名名称"); //阿里云申请的模板编码 request.putQueryParameter("TemplateCode", templateCode); //验证码 request.putQueryParameter("TemplateParam", JSONObject.toJSONString(code)); try { CommonResponse response = client.getCommonResponse(request); System.out.println(response.getData()); //成功返回成功 return response.getHttpResponse().isSuccess(); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } //失败返回false return false; } }

AccessKeyId和secret获取

操作步骤
使用阿里云账号登录 控制台。
将鼠标置于页面右上方的账号图标,单击AccessKey管理
安全提示对话框,选择使用阿里云账号AccessKey或RAM用户AccessKey。
使用阿里云账号AccessKey
  1. 单击继续使用AccessKey
  2. RAM访问控制页面,单击创建AccessKey
  3. 获取验证码,单击确定
  4. 创建AccessKey对话框,查看AccessKey ID和AccessKey Secret。可以单击下载CSV文件,下载AccessKey信息。或者单击复制,复制AccessKey信息。
使用RAM用户AccessKey
  1. 单击开始使用子用户AccessKey
  2. 系统自动跳转到 RAM控制台的用户页面,找到需要获取AccessKey的RAM用户。
    说明如果没有RAM用户,请先创建RAM用户,详情请参见创建RAM用户
  3. 单击用户登录名称。
  4. 认证管理页签下的用户AccessKey区域,单击创建AccessKey
  5. 获取验证码,单击确定
  6. 创建AccessKey页面,查看AccessKey ID和AccessKey Secret。可以单击下载CSV文件,下载AccessKey信息。或者单击复制,复制AccessKey信息。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询