0.阿里云文档地址
可以设置测试手机号
1.引入依赖
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.1.0</version></dependency>
2.controller层代码
// 发送短信,访问接口就向手机号发送短信,不处理任何业务@GetMapping("/send/{phone}")public R sendMail(@PathVariable("phone") String phoneId) {String code = RandomUtil.getFourBitRandom();Map<String, Object> param = new HashMap<>();param.put("code", code);boolean ifSuccess = msmService.sendMail(code, phoneId);if (ifSuccess) {return R.ok();} else {return R.error();}}
3.service层代码
@Overridepublic boolean sendMail(String code, String phoneId) {String securityCode;try {// 查询redis中是否已经有这个手机号对应的验证码了,避免重复发送验证码if (StringUtils.isNotEmpty(redisTemplate.opsForValue().get(phoneId))) {return true;}// 发送短信Map<String, String> map = new HashMap<>();map.put("accessKeyId", "");//填写自己的accessKeyIdmap.put("accessKeySecret", "");// 和secret// 手机号map.put("phoneNumbers", phoneId);// 签名名称map.put("signName", "阿里云短信测试");// 模板codemap.put("templateCode", "SMS_154950909");securityCode = RandomUtil.getFourBitRandom();// 验证码map.put("templateParam", "{code:" + securityCode + "}");SendEmailUtil.sendMsg(map);} catch (Exception e) {e.printStackTrace();return false;}redisTemplate.opsForValue().set(phoneId, securityCode, 5, TimeUnit.MINUTES);return true;}