1、注册阿里云短信业务

1、开通服务

2、添加签名

3、添加模板

2、使用

1、导入maven依赖

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.28</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId></dependency><dependency><groupId>com.aliyun</groupId><artifactId>tea-openapi</artifactId><version>0.2.2</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>2.0.9</version></dependency>

2、创建工具类,用于随机生成验证码RandomUtil.java

package com.tuzhi.service_msm.util;import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;/*** 获取随机数* * @author qianyi**/
public class RandomUtil {private static final Random random = new Random();private static final DecimalFormat fourdf = new DecimalFormat("0000");private static final DecimalFormat sixdf = new DecimalFormat("000000");public static String getFourBitRandom() {return fourdf.format(random.nextInt(10000));}public static String getSixBitRandom() {return sixdf.format(random.nextInt(1000000));}/*** 给定数组,抽取n个数据* @param list* @param n* @return*/public static ArrayList getRandom(List list, int n) {Random random = new Random();HashMap<Object, Object> hashMap = new HashMap<Object, Object>();// 生成随机数字并存入HashMapfor (int i = 0; i < list.size(); i++) {int number = random.nextInt(100) + 1;hashMap.put(number, i);}// 从HashMap导入数组Object[] robjs = hashMap.values().toArray();ArrayList r = new ArrayList();// 遍历数组并打印数据for (int i = 0; i < n; i++) {r.add(list.get((int) robjs[i]));System.out.print(list.get((int) robjs[i]) + "\t");}System.out.print("\n");return r;}
}

2、创建service业务类MsmServiceImpl.java

package com.tuzhi.service_msm.service.impl;import com.alibaba.fastjson.JSONObject;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import com.tuzhi.service_msm.service.MsmService;
import com.tuzhi.utilcommon.result.Result;
import com.tuzhi.utilcommon.result.ResultCode;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;import java.util.Map;@Service
public class MsmServiceImpl implements MsmService {//发送短信的方法@Overridepublic boolean send(Map<String, Object> param, String phone){//配置文件Config config = new Config().setAccessKeyId("LTAI5t8UDYKyZiH7fLespJrm").setAccessKeySecret("oeQPbwJ8aWSyG9Q2sKtDifmZN0iIOU");config.endpoint = "dysmsapi.aliyuncs.com";try {//客户端Client client = new Client(config);SendSmsRequest request = new SendSmsRequest();request.setPhoneNumbers(phone);request.setSignName("阿里云短信测试");request.setTemplateCode("SMS_154950909");request.setTemplateParam(JSONObject.toJSONString(param));//发送client.sendSms(request);} catch (Exception e) {e.printStackTrace();return false;}return true;}
}

3、创建控制层使用

@Autowired
private MsmService msmService;@Autowired
private RedisTemplate<String,String> redisTemplate;//发送短信的方法
@GetMapping("send/{phone}")
public Result sendMsm(@PathVariable String phone) {//1 从redis获取验证码,如果获取到直接返回String code = redisTemplate.opsForValue().get(phone);if(!StringUtils.isEmpty(code)) {return Result.ok();}//2 如果redis获取 不到,进行阿里云发送//生成随机值,传递阿里云进行发送code = RandomUtil.getFourBitRandom();Map<String,Object> param = new HashMap<>();param.put("code",code);//调用service发送短信的方法boolean isSend = msmService.send(param,phone);if(isSend) {//发送成功,把发送成功验证码放到redis里面//设置有效时间redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);return Result.ok();} else {return Result.error().codeAndMessage(ResultCode.VALID_CODE_SEND_FAIL);}
}redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);return Result.ok();} else {return Result.error().codeAndMessage(ResultCode.VALID_CODE_SEND_FAIL);}
}

阿里云的短信验证码功能实现相关推荐

  1. 阿里云的短信验证功能实现

    阿里云的短信验证功能实现 第一步:申请 签名,模板,RAM访问控制 签名 模板 RAM访问控制 创建用户 创建完一定要保存 这个 截图里面的参数 这只能看一次 创建完成,添加授权 搜索 短信 添加 管 ...

  2. 使用阿里云发送短信验证码

    目录 一.用户注册登录流程 二.使用阿里云发送短信验证码 ⭐生成密钥 ⭐将密钥配置到项目中 ⚪新建properties文件并填入相应信息 ⚪pom配置 ​⚪ 测试代码 ⚪添加签名 ​⚪添加短信发送的模 ...

  3. java短信内容加链接_Java加腾讯云实现短信验证码功能

    准备工作 1.选择服务 2.添加应用:我已经添加完了 3.点击应用名称 4.出现ID和Key 5.编辑短信创建签名 6.在第5步后 使用到的jar包: qcloudsms-1.0.2.jar com. ...

  4. 使用阿里云发送短信验证码(JAVA实现)

    文章目录 准备工作 完成阿里云认证 生成秘钥 申请签名和模板 编写代码 需要引入的JAR包依赖 代码 充钱 准备工作 我们首先登陆阿里云 https://www.aliyun.com 完成阿里云认证 ...

  5. 新版阿里云发送短信验证码详解

    关与作者更多博客请访问云里云外开源社区 一.申请短信服务步骤 首先进入阿里云控制台,点击左侧产品与服务,找到短信服务. 第一次进入会有新手引导,这里主要介绍一下大致步骤和易错点 申请短信签名和模板 短 ...

  6. 调用阿里云发送短信验证码的工具类

    /*** @Description 阿里云短信发送工具类* @Author 曰业而安*/ public class SendSmsUtil { //phone 手机号 //param 验证码 注意这里 ...

  7. 阿里云的短信验证码(详细)

    官方流程图 如何发送一条短信 为了成功发送一条短信通知,您至少需要完成以下步骤 (刚需) 一.在控制台完成短信签名与短信模版的申请,获得调用接口必备的参数 在"短信签名"页面完成签 ...

  8. 阿里云发送短信验证码失败

    报错: 把require_once  '/api_sdk/vendor/autoload.php'; 改为 require_once  __DIR__ .'/api_sdk/vendor/autolo ...

  9. 【Springboot】| 阿里云发送短信验证码,你会了吗?

  10. Springboot实现短信验证码功能(阿里云)

    最近在写毕业设计,找回密码时用到了短信验证码功能,记录如下,初学者 大神勿喷 通过阿里云实现短信验证功能,一定要申请一个阿里账号 登录阿里云控制台,通过AccessKey 开启子用户,添加一个用户组和 ...

最新文章

  1. [探讨]route print PC与交换机的区别
  2. python PyQt5.QtWidgets.QWidget类
  3. IT项目管理总结:第六章 项目时间管理
  4. UNITY编辑器模式下static变量的坑
  5. TCP和UDP套接字编程
  6. matlab中y=x(:,ones(1,3))的含义解读
  7. c++进制转换代码_轻松实现C/C++各种常见进制相互转换,你还不会你就落后了
  8. csv python 只写一次_在Python CSV Writer循环中写入一次头
  9. css中调整高度充满_6个很棒的PostCSS插件,让您成为一个CSS向导
  10. 数据分析必备的统计学(二):假设检验
  11. jquery选择器之基本选择器
  12. 解决Latex编译报错:Command `\Bbbk‘ already defined. ...ol{\Bbbk} {\mathord}{AMSb}{“7C}
  13. 复旦NLP组:大厂模型的鲁棒性进步了吗?
  14. 一个经典实用的iptables shell脚本
  15. 【SICP练习】142 练习3.77
  16. 【模拟电路】电源效率与散热
  17. markdown笔记1--设置字体、颜色、图片、背景色
  18. matlab特定颜色提取
  19. 分散的无纸记录仪如何通过无线集中实现短信报警
  20. 【观察】“专精特新”数智化国产替代,为何首选用友U9cloud?

热门文章

  1. mac idea jrebel 激活
  2. python内置函数用来打开或创建文件并返回文件对象_python内置函数
  3. win10 32位和64位的区别,win10 32位和64位有什么区别
  4. 57 spi电平转换的坑
  5. 基于逻辑回归的评分卡模型简单概述
  6. 阿里云快速搭建网站教程
  7. 阿里云文本检测 使用教程(Java)
  8. 数据分析项目分析之风控建模!!
  9. MIPI接口和DVP接口的区别及优点
  10. 系统集成项目管理: 三点估算法估算工期和方差的计算公式和习题