一、阿里云短信服务条件

1.阿里云帐号开通短信服务

2.申请短信签名signName和模版templateCode,并通过。模版中的code不要变
添加短信签名(个人开发者建议选择验证码,通用的话需要补充企业信息),添加短信模版(推荐使用推荐模版,审核快一点)



3.设置accessKeyId和Secret,且确保账户有钱或者可以考虑购买短信套餐

二、代码开始

1.创建Springboot项目hello-rabbit,导入核心依赖,官方依赖(尽量最新版)

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/>
</parent>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency><!-- 阿里云短信 SDK for Java -->
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.4.6</version>
</dependency>

2.application.yml配置

alisms:accessKeyId: AccessKey管理里的accessKeyIdaccessSecret: AccessKey管理里的SecretsignName: 短信签名名称templateCode: 模版code

3.修改官方demo进行封装,SendSmsUtil.java

package com.basic.hellorabbit.util;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.google.gson.Gson;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @Description:    短信发送工具
* @Author:         Joe
* @CreateDate:     2020/3/21 15:49
*/
@Service
public class SendSmsUtil {@Value("${alisms.accessKeyId}")private String accessKeyId;@Value("${alisms.accessSecret}")private String accessSecret;@Value("${alisms.signName}")private String signName;@Value("${alisms.templateCode}")private String templateCode;public String aliSendSms(String PhoneNumbers,String TemplateParam){String result = "";DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessSecret);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("RegionId", "cn-hangzhou");request.putQueryParameter("PhoneNumbers", PhoneNumbers);request.putQueryParameter("SignName", signName);request.putQueryParameter("TemplateCode", templateCode);request.putQueryParameter("TemplateParam", TemplateParam);try {CommonResponse response = client.getCommonResponse(request);System.out.println(response.getData());String infojson = response.getData();Gson gson2 = new Gson();Map map = gson2.fromJson(infojson, Map.class);String codes = map.get("Message").toString();System.out.println("codes="+codes);if(codes.equals("OK")){result="ok";}else {result="not_ok";}} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();}System.out.println("result="+result);return result;}}

4.在resources/templates下新建sms.html进行测试

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>短信测试页面</title>
</head>
<body>
<h3>短信验证码发送</h3>
<br>
<br>
<br>
<a href="/sendSms/手机号码">阿里云短信发送</a>
<hr><h3>短信验证</h3>
<form method="post"  action="/yanSms"><p>手机号码:<input type="text" name="PhoneNumbers"/></p><p>验证码:<input type="text" name="code"/></p><p><input type="submit" value="开始验证"/></p>
</form>
</body>
</html>

5.使用SmsController.java进行发送和验证

package com.basic.hellorabbit.controller;import com.basic.hellorabbit.util.SendSmsUtil;
import com.basic.hellorabbit.util.VerificationCode;
import com.google.gson.Gson;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;/**
* @Description:    短信
* @Author:         Joe
* @CreateDate:     2020/3/21 16:31
*/
@Controller
public class SmsController {@Autowiredprivate SendSmsUtil sendSmsUtil;@Datapublic static class SmsData{String code;public SmsData(String code) {this.code = code;}}/*** 跳转到短信测试页面* @return*/@RequestMapping(value = "/toSms",method = RequestMethod.GET)public String toSms(){return "sms";}/*** 发送验证码* @param PhoneNumbers 手机号* @return*/@ResponseBody@RequestMapping(value = "/sendSms/{PhoneNumbers}",method = RequestMethod.GET)public String sendSms(@PathVariable String PhoneNumbers, HttpServletRequest request){HttpSession session = request.getSession();//随机生成验证码String numeral = VerificationCode.getNumeral();SmsData smsData = new SmsData(numeral);Gson gson = new Gson();String code = gson.toJson(smsData);String information = sendSmsUtil.aliSendSms(PhoneNumbers, code);session.setAttribute(PhoneNumbers,numeral);session.setMaxInactiveInterval(3 * 60);if(information.equals("ok")){return "成功发送给"+PhoneNumbers+";验证码是"+numeral;}return "失败了"+PhoneNumbers;}/*** 验证* @param PhoneNumbers* @param code* @param request* @return*/@ResponseBody@RequestMapping(value = "/yanSms",method = RequestMethod.POST)public String yanSms(String PhoneNumbers, String code,HttpServletRequest request){HttpSession session = request.getSession();String ycode = (String) session.getAttribute(PhoneNumbers);if(ycode.equals(code)){return PhoneNumbers+"验证成功";}return PhoneNumbers+"验证失败";}}

6.生成随机验证码工具类VerificationCode.java:java实现随机生成验证码工具类

代码初步测试通过,至于其中涉及到的手机号码校验等在此忽略

Springboot整合阿里云短信SDK发送短信验证码笔记相关推荐

  1. SpringBoot整合阿里云短信服务详细过程(保证初学者也能实现)

    前言 网上关于实操性的文章普遍大部分都记录不全,要么只记录重点部分,对于刚学习的小伙伴来说看起来是比较困难的 所以,基于这一点. 该文章会详细介绍使用SpringBoot整合阿里云短信服务的每一步过程 ...

  2. springboot整合阿里云oss上传的方法示例

    这篇文章主要介绍了springboot整合阿里云oss上传的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 OSS申请和 ...

  3. SpringBoot整合阿里云视频点播

    文章目录 SpringBoot整合阿里云视频点播 1.准备工作 2.服务端SDK的使用 2.1 导入依赖 2.2 初始化类 2.3 创建读取公共常量的工具类 2.4 获取视频播放地址 2.5 获取视频 ...

  4. SpringBoot整合阿里云OSS

    文章目录 SpringBoot整合阿里云OSS 1.准备工作 1.1 开通"对象存储OSS"服务 1.2 创建Bucket 1.3 创建RAM子用户 2.SpringBoot整合阿 ...

  5. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...

  6. SpringBoot整合——阿里云对象存储(OSS)

    SpringBoot整合--阿里云对象存储 1 OSS介绍 在开发应用的过程中,我们经常会有用户需要实名认证之后才能访问的需求. 用户认证需要上传证件图片.首页轮播也需要上传图片,因此我们要做文件服务 ...

  7. 一小时学会使用SpringBoot整合阿里云SMS短信服务

    1. 登录阿里云进入控制台 进入阿里云控制台,https://home.console.aliyun.com/在个人头像位置点击进入AccessKey管理: 2. 创建用户和用户组 创建用户组 添加完 ...

  8. Springboot整合阿里云视频点播服务

    目录 一.阿里云视频点播服务 二.开通视频点播云平台 1.搜索视频点播服务 2.开通视频点播 3.选择按使用流量计费 三.使用SDK 1.添加Jar包依赖 2.application.properti ...

  9. SpringBoot整合阿里云OSS上传文件

    一.需求分析 文件上传是一个非常常见的功能,就是通过IO流将文件写到另外一个地方,这个地方可以是项目下的某个文件夹里,或者是本地电脑某个盘下面,还可以是云服务OSS里面,这里就是我要讲到的OSS,我写 ...

  10. SpringBoot实现阿里短信SDK发送短信,使用MQ监听器

    先 创建sms短信微服务工程,有可能很多工程要使用我们创建的短信服务. 项目环境: SpringBoot SpringClould 步骤: config SmsConfiguration: /*** ...

最新文章

  1. 电压放大倍数公式运放_运放电路:同相放大还是反相放大?
  2. 52个有用的 Docker 工具
  3. linux centos7修改默认启动的内核(升级及切换内核)
  4. 禁用内存清理_win10电脑开机内存占用高达80%以上如何解决
  5. Java核心篇之泛型--day5
  6. Ranger-Sqoop2插件安装
  7. seo自动工具_【SEO工具】搭建一个网站需要用到哪些SEO工具?
  8. sql server 群集_SQL Server 2014 –安装群集实例–分步(3/3)
  9. java程序员目标_Java程序员的目标,你都达到了多少条?
  10. (转)什么时候加上android.intent.category.DEFAULT和LAUNCHER
  11. linux --- 启动过程
  12. 使用vs2005经验与教训(关于masterpage,menu,gridview及对exce的l操作)
  13. MyEclipse9.0 XJad的配置
  14. CSDN认证博客专家申请通过,感动,欣慰,分享一下我的经验!
  15. 大数据Flink(八):Flink入门案例
  16. 波士顿大学计算机科学与技术专业,波士顿大学计算机科学专业.pdf
  17. 500Illegal PORT command 错误 无法取得目录列表 8uftp
  18. Fibonacci数列练习题
  19. 2021-2027全球与中国核磁共振管市场现状及未来发展趋势
  20. safari浏览网页打开速度很慢怎样解决

热门文章

  1. 需求与商业模式分析-1-商业模式画布
  2. Python进阶之八皇后算法
  3. matlab|已知多点坐标,求两两之间的距离
  4. 离散系统的李雅普诺夫稳定判据
  5. android 壁纸服务,8.1 初识Android壁纸
  6. LDA算法原理及LDA与PCA的比较
  7. 5G 协议 标准 下载
  8. 深入机械制造业供应链关键节点,SCM供应链管理系统全面防控企业供应链风险
  9. 关于W5500/LAN8720与STM32以及与千兆交换机芯片通信的硬件、软件调试不通的问题
  10. 如何优化你的ERP库存管理系统