阿里云短信服务---测试模板实现
2023年阿里云短信服务个人申请模板已经申请不到了,现在使用测试模板实现发送短信功能
但你手机上接收到的是模板字符串,具体验证码可以自行存到Redis或者输出到控制台
步骤:
平台链接:
https://dysms.console.aliyun.com/quickstart
依次点击下面图片的提示
设置测试模板参数
代码实现:
controller层
//发送短信的方法 @GetMapping("send/{phone}") public R sendSms(@PathVariable String phone){ //1、从redis获取验证码,如果获取到直接返回 String code = redisTemplate.opsForValue().get(phone); if (!StringUtils.isEmpty(code)) { return R.ok().message("短信已发送"); } //2 如果redis获取 不到,进行阿里云发送 //生成随机值,传递阿里云进行发送 code = RandomUtil.getFourBitRandom(); Map<String,Object> param = new HashMap<>(); param.put("code", code); boolean isSend = smsService.send(phone, "SMS_154950909", param); if(isSend) { //保存到Redis redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES); return R.ok().message("发送短信成功"); } else { return R.error().message("发送短信失败"); } } }
service接口
boolean send(String phone, String sms_154950909, Map<String, Object> param);
service实现
@Override public boolean send(String phone, String templateCode, Map<String, Object> param) { DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<your-access-key-id>", "<your-access-key-secret>"); IAcsClient client = new DefaultAcsClient(profile); SendSmsRequest request = new SendSmsRequest(); request.setSignName("阿里云短信测试"); request.setTemplateCode("SMS_154950909"); request.setPhoneNumbers("***********"); request.setTemplateParam("{"code":"1234"}"); try { SendSmsResponse response = client.getAcsResponse(request); System.out.println(new Gson().toJson(response)); //获得响应状态码,返回true return response.getCode().equals("OK"); } catch (ServerException 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; }
这样你的手机就能接收到短信了~~~~~~~