SpringBoot 整合 redis-阿里云发送短信
pom
<dependencies>
<!--阿里云短信-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.16</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.1.0</version>
</dependency>
<!--常见的工具类-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.9</version>
</dependency>
<!--Redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--Web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
controller
@RestController
@CrossOrigin
public class RedisTes {
@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> map = new HashMap<>();
map.put("code", code);
// 申请的验证码只能为数字,templateCode为阿里云的模板code序列号
boolean isSend = sendSms.send(phone, "SMS", map);
if (isSend){
redisTemplate.opsForValue().set(phone, code, 5, TimeUnit.SECONDS);
return phone + ": " + code + "发送成功! ";
}else {
return " 发送失败";
}
}
}
service
public interface SendSms {
/**
* 输入 发送的手机号码、模板短信code、发送的信息code
* @param phoneNum
* @param templateCode
* @param code
* @return
*/
public boolean send(String phoneNum, String templateCode, Map<String,Object> code);
}
serviceImpl
@Service
public class SendSmsImpl implements SendSms{
@Override
public boolean send(String phoneNum, String templateCode, Map<String, Object> code) {
// 连接阿里云
DefaultProfile profile = DefaultProfile.getProfile("地区", "身份令牌key", "身份令牌pwd");
IAcsClient client = new DefaultAcsClient(profile);
// 构建请求
// 构建请求
SendSmsRequest request = new SendSmsRequest();
request.setPhoneNumbers(phoneNum);//接收短信的手机号码
request.setSignName("ElloeStudy");//短信签名名称
request.setTemplateCode(templateCode);//短信模板CODE
request.putQueryParameter("TemplateParam", JSONObject.toJSONString(code));
try {
SendSmsResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
return true;
}catch (ClientException e) {
e.printStackTrace();
}catch (ClientException e){
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
return false;
}
}
本文来自博客园,作者:ElloeStudy,转载请注明原文链接:https://www.cnblogs.com/ElloeStudy/p/17603482.html
分类:
Redis
, zsf-springboot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署