由于阿里云现在的短信签名无法通过申请,所以我这里选择了中国网建SMS短信平台(手机号注册即用,有免费赠送的几条短信测试)

demo代码地址:https://github.com/mer97/springboot-sendmessage

Spring boot 实现发送手机验证码功能:

依赖包:

dependencies {implementation 'org.springframework.boot:spring-boot-starter-json'implementation 'org.springframework.boot:spring-boot-starter-data-redis'implementation 'commons-httpclient:commons-httpclient:3.0.1'implementation 'commons-codec:commons-codec:1.4'testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

工具类:

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;/*** @author LEEMER* Create Date: 2019-01-18*/
public class SendMessageUtil {private static final String SMS_Url = "http://sms.webchinese.cn/web_api/";/*** @param Uid SMS用户id  : LEEMER* @param Key 接口秘钥:SMS登录可查(非登录密码)* @param sendPhoneNum 短信发送目标号码* @param desc 短信内容* @return Integer(1:成功码,其他失败,具体参见注释)*/public static Integer send(String Uid,String Key,String sendPhoneNum,String desc){HttpClient client = new HttpClient();PostMethod post = new PostMethod(SMS_Url);post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");// 在头文件中设置转码//设置参数NameValuePair[] data = {new NameValuePair("Uid", Uid),//登录用户名new NameValuePair("Key", Key),//秘钥new NameValuePair("smsMob", sendPhoneNum),new NameValuePair("smsText", desc)};post.setRequestBody(data);try {client.executeMethod(post);} catch (Exception e) {  e.printStackTrace();  }Header[] headers = post.getResponseHeaders();int statusCode = post.getStatusCode();System.out.println("statusCode:" + statusCode);for (Header h : headers) {System.out.println(h.toString());}String result ="";try {result = new String(post.getResponseBodyAsString().getBytes("gbk"));} catch (Exception e) {  e.printStackTrace();  }post.releaseConnection();return Integer.parseInt(result);}/***  -1  没有该用户账户-2 接口密钥不正确 [查看密钥]不是账户登陆密码-21    MD5接口密钥加密不正确-3 短信数量不足-11    该用户被禁用-14    短信内容出现非法字符-4 手机号格式不正确-41    手机号码为空-42    短信内容为空-51    短信签名格式不正确接口签名格式为:【签名内容】-6 IP限制大于0    短信发送数量以上作为补充*/public static String getMessage(Integer code){String message;if(code > 0 ) {message = "SMS-f发送成功!短信发送数量:" + code + "条";}else if(code == -1){message = "SMS-没有该用户账户";}else if(code == -2){message = "SMS-接口密钥不正确";}else if(code == -21){message = "SMS-MD5接口密钥加密不正确";}else if(code == -3){message = "SMS-短信数量不足";}else if(code == -11){message = "SMS-该用户被禁用";}else if(code == -14){message = "SMS-短信内容出现非法字符";}else if(code == -4){message = "SMS-手机号格式不正确";}else if(code == -41){message = "SMS-手机号码为空";}else if(code == -42){message = "SMS-短信内容为空";}else if(code == -51){message = "SMS-短信签名格式不正确接口签名格式为:【签名内容】";}else if(code == -6){message = "SMS-IP限制";}else{message = "其他错误";}return message;}}

测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {private static final Logger LOGGER = LoggerFactory.getLogger(DemoApplicationTests.class);@Autowiredprivate RedisTemplate redisTemplate;/*** 生成随机数* @param num 位数* @return*/public static String createRandomNum(int num){String randomNumStr = "";for(int i = 0; i < num;i ++){int randomNum = (int)(Math.random() * 10);randomNumStr += randomNum;}return randomNumStr;}/*** 中国网建 SMS短信*/@Testpublic void sendMessage(){var timeout = 5;String code = createRandomNum(6);var sendPhoneNum = "137********";Integer resultCode = SendMessageUtil.send("LEEMER","d41d8*******",sendPhoneNum,"尊敬的用户,您好,您的验证码为:"+code+",请于"+timeout+"分钟内正确输入,如非本人操作,请忽略此短信。");System.out.println(SendMessageUtil.getMessage(resultCode));if (resultCode>0){System.out.println("已发送至:"+sendPhoneNum+",验证码:"+ code);//手机验证码发送成功。验证码存入Redis缓存redisTemplate.opsForValue().set(sendPhoneNum,code);redisTemplate.expire(sendPhoneNum,5, TimeUnit.MINUTES);}}}

Spring boot 发送手机验证码相关推荐

  1. 腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现)

    文章目录 腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现) 1.打开腾讯云短信服务 2.创建短信签名 3.创建短信正文模板 4.等待全部审核完毕即可 5.发送短信 ...

  2. 注册/找回密码等功能中发送手机验证码后倒计时效果的实现(基于vue)

    注册/找回密码等功能中发送手机验证码后倒计时效果的实现,基于vue.element-ui <template><el-button size="small" ty ...

  3. SpringBoot+vue 使用阿里云的短信功能发送手机验证码

    前言: 小编后端用的是Springboot 前端用的是vue ,小编主要是写后台,前端页面比较简陋,后期还要调优,写的不对处还望多多包涵. 环境: 需要先准备好阿里云的账号和一些必要的参数.详情见我的 ...

  4. python按照号段生成手机号接收验证码_django 发送手机验证码的示例代码

    一.流程分析: 1.用户在项目前端,输入手机号,然后点击[获取验证码],将手机号发到post到后台. 2.后台验证手机号是否合法,是否已被占用,如果通过验证,则生成验证码,并通过运行脚本,让短信运营商 ...

  5. java实现发送手机验证码功能

    1. 进入秒嘀科技(http://www.miaodiyun.com/),注册一个账号 2. 注册好之后,点击 用户中心 -> 账户管理,就会进入如下界面 (顺便提一下,新注册的用户,平台会免费 ...

  6. 手机验证码平台,怎么发送手机验证码,php开发手机验证码短信接口功能

    通过前面的学习, 你已经掌握怎么在腾讯短信平台上设置项目, 添加短信签名, 设置短信模板, 把手机验证码注册页面写好. 今天子恒老师来跟你分享怎么实现发送手机验证码给用户, 注意我们使用的是php开发 ...

  7. springMVC+阿里云API = 实现发送手机验证码短信

    springMVC+阿里云API = 实现发送手机验证码短信 前段时间vue框架做了一个旅游APP软件,其中在用户登录APP的时候,我不仅提供了用户可以自己手动先去注册账号在进行登陆App.然后我还提 ...

  8. 解决申请开发者office E5中无法发送手机验证码,reCaptcha加载失败

    关于申请开发者office E5中无法发送手机验证码的解决方案 文章目录 关于申请开发者office E5中无法发送手机验证码的解决方案 注册过程 加载失败原因 解决过程 解决方案 注册过程 这是我的 ...

  9. 发送手机验证码,验证手机验证码,包括数据表的设计

    表结构:https://download.csdn.net/download/weixin_42330073/10848493 <?php/*** 发送手机验证码*/public functio ...

最新文章

  1. java继承对象转换_java 继承的基础(转)
  2. 无盘服务器游戏盘尺寸,网吧无盘游戏服务器 案例五
  3. 《Windows核心编程》学习笔记(9)– 在win7或者vista系统下提升一个进程的运行权限...
  4. solaris 10安装Oracle10.2g
  5. Ubuntu报“xxx is not in the sudoers file.This incident will be reported” 错误解决方法
  6. 安卓开发3d模型展示源码_玩具模型样品3D打印,让玩具开发无限可能
  7. Web应用测试(一)Selenium介绍及环境搭建
  8. 拓端tecdat|R语言GARCH模型对股市sp500收益率bootstrap、滚动估计预测VaR、拟合诊断和蒙特卡罗模拟可视化
  9. 透视分析和即席查询区别
  10. IT研发测试类笔试(第一篇
  11. Axure RP 7.0学习
  12. upgrade pip‘ command
  13. arm跑操作系统的意义_上手一个具体而微的 ARM 操作系统
  14. UOJ449. 【集训队作业2018】喂鸽子 [概率期望,min-max容斥,生成函数]
  15. php 通过sendcloud发送邮件附件功能
  16. Mac 升级Python 有python2.7到python3.9
  17. xp电脑对ajax的兼容性,xp系统iE11兼容性问题的详细技巧
  18. Android开发实现上一页,下一页显示内容
  19. Federated Graph Neural Networks
  20. Linux入门——1、Linux的安装(Ubuntu)

热门文章

  1. 简单的stm32入门小程序(交通信号灯)STM32F103C8T6
  2. for 循环的流程图等价形式
  3. java全栈系列之JavaSE-面向对象(抽象类)041
  4. 姿态角(Euler角):yaw pitch roll
  5. 张艾迪(创始人):23岁天才的创业史
  6. 关于tools:ignore=“Suspicious0dp“的问题父类定向为竖向时,别横向等分父类的高
  7. VsCode打开终端的方法
  8. (5.7)mysql高可用系列——MySQL中的GTID复制(理论篇)【转】
  9. 刷爆全网的动态条形图,原来5行Python代码就能实现!
  10. jzoj4270. 【NOIP2015模拟10.27】魔道研究