Spring boot 发送手机验证码

article/2025/8/27 19:16:28

由于阿里云现在的短信签名无法通过申请,所以我这里选择了中国网建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);}}}

 


http://chatgpt.dhexx.cn/article/0khlp4Fm.shtml

相关文章

Java实现发送手机验证码,发送短信

要发送短信&#xff0c;我们需要第三方提供的短信接口&#xff0c;这里我使用阿里云的短信服务。 首先进入阿里云的官网&#xff0c;然后注册。登陆之后选择云通信——》短信服务 然后点击免费开通。 开通后进入控制中心&#xff0c;选择右上方的支持与服务&#xff0c;选择帮…

Java实现手机发送短信验证码

发送短信验证码首先要在互亿无线短信平台去开通短信服务,地址"ihuyi.com" 一定要留好自己申请的API ID,API key和模板参数说明:代码示例: pom导包 <!-- 短信 --> <dependency><groupId>dom4j</groupId><artifactId>dom4…

SSM发送手机验证码——以网建SMS为例

整理一下从大二开始写的东东 后台源码链接&#xff1a; 点我自取 到网建申请一个帐号&#xff0c;好像可以免费用10条短信 设置用户名、密钥&#xff0c;在发送的时候需要携带该信息 前端代码简化后如下&#xff0c;提交表单我用的是ajax&#xff0c;如果直接提交表单记得name…

Java实现发送手机验证码

向手机发送验证码在用户注册等等业务中会用到&#xff0c;下面我来介绍如何用Java实现向手机发送验证码。 笔者此处使用的是阿里云的短信服务&#xff0c;首先需要登录阿里云官方网站&#xff0c;找到并开通短信服务&#xff0c;然后需要申请短信签名和模版&#xff0c; 短信签…

java 实现发送手机验证码的功能 (超详细)

我这里使用的旦米&#xff08;http://www.danmi.com/&#xff09;你们用阿里的就去看看其他博客 1.首先注册一个旦米的账号,第一次注册会免费的送你10元。足够你去测试用&#xff0c;不用担心自己去充钱。 2.注册好了登录进去&#xff0c;必须要公司认证&#xff0c;认证通过之…

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

1. 进入秒嘀科技&#xff08;http://www.miaodiyun.com/&#xff09;&#xff0c;注册一个账号 2. 注册好之后&#xff0c;点击 用户中心 -> 账户管理&#xff0c;就会进入如下界面 &#xff08;顺便提一下&#xff0c;新注册的用户&#xff0c;平台会免费赠送你10元&#…

vue使用element发送手机验证码倒计时

发送验证码倒计时 html <el-form class"form" :model"form" labeal-position"left"> <el-form-item label"姓名"><el-input v-model"form.Name" placeholder"请输入姓名"></el-input>…

C# WinForm 使用SMS接口发送手机验证码+图形验证码+IP限制

文章目录 前言功能实现一、功能界面二、创建图形验证码类三、创建存储IP地址的数据库表四、创建手机验证码类五、在Form1中调用以上两个类中的函数&#xff0c;实现功能 前言 1.发送手机验证码用的是网建的SMS接口&#xff08;http://sms.webchinese.cn/&#xff09;   2.手机…

uniapp | 发送手机验证码 button组件

一、功能和效果展示 1.组件功能 uniapp &#xff08;1&#xff09;按钮初始显示“发送”&#xff0c;点击按钮后按钮显示倒计时60s&#xff1b; &#xff08;2&#xff09;倒计时60s期间点击按钮&#xff0c;不会重置计时器&#xff1b; &#xff08;3&#xff09;倒计时60s结…

发送手机验证码

手机验证码不能自己生成&#xff0c;需要由第三方来完成发送。本文选择网易云作为第三方来发送验证码。 首先&#xff0c;我们要注册网易云账号&#xff0c;完成登陆。选择“产品与服务”选项中的“通信与视频”&#xff0c;点击创建应用&#xff0c;完成后&#xff0c;下方有…

java发送手机验证码实现

正文 今天来用java实现手机验证码的发送。 短信平台有很多&#xff0c;中国网建提供的SMS短信通&#xff0c;注册免费5条短信&#xff0c;3条彩信&#xff0c; http://sms.webchinese.cn/ 但是刚才试了&#xff0c;第一次用官方提供的demo发送成功&#xff0c;然后整合到自…

Excel 字符串拼接

例子&#xff1a;“exec sp_addextendedproperty N’MS_Description’, N’”&B1&“‘, N’SCHEMA’, N’dbo’,N’table’, N’”&A1&“” &#xff1a;公式 “ abc ” &#xff1a; “”中间为任意字符/字符串 & A1 &&#xff1a;&&中间为拼…

Excel如何插入文本字符串或字符

目录 1.用“&”连接的方法插入文本或字符的办法及实例 2.用TEXT函数插入“&#xffe5;”或“$"字符 3.用TEXT函数以及“&”连接符插入文本或符号 1.用“&”连接的方法插入文本或字符的办法及实例 &#xff08;1&#xff09;方法&#xff1a;关键在于用“&a…

excel连接字符串

Excel连接字符串的功能挺强大的。 很实用。 有2种方式。 1&#xff1a; 2&#xff1a; 1个是调用了concatnate函数&#xff0c;一个是使用了&(就是号的功能了)。

excel字符串和单元格拼接,Excel中将单元格的字符串进行合并的具体方法

在利用Excel进行办公时&#xff0c;对多个单元格的字符串进行合并是很常见的操作&#xff0c;但是对于刚接触Excel软件的小伙伴来说&#xff0c;可能有些困难。下面小编就与大家分享一下在Excel中实现字符串合并的方法&#xff0c;有需要的用户可以参考下。 Excel中如何合并文本…

excel中按条件合并字符串

若B列不为空则将A列和B列合并后给C列&#xff1b; C IF(ISBLANK(B1), B1,CONCAT(A1,B1)) 结果却出问题&#xff0c;当B列为空时&#xff0c;C列却显示0&#xff0c;解决方法是&#xff1a;选择C列设置单元格格式&#xff0c;选择自定义&#xff0c;在类型处添加 [0]" &q…

Excel技巧:巧用字符串连接

Excel中有一个基本的公式&#xff0c;就是把几个单元格中的字符串连接起来。 比如上面这个例子&#xff0c;A1&#xff0c;B1&#xff0c;C1单元格中字符串连接起来&#xff0c;只要在D1单元格中输入 A1&B1&C1即可。 下面我们开始使用字符串连接功能。 例1&#xff1a;…

Excel字符连接(concat)

Excel连接字符串有两个比较常用的方法。 1.concat函数 2.”&”连接符

C#操作Excel文件三种方式及连接字符串

转自&#xff1a;http://www.cnblogs.com/JacobHuang/p/5663926.html .Net平台上对Excel进行操作主要有两种方式。第一种&#xff0c;把Excel文件看成一个数据库&#xff0c;通过OleDb的方式进行读取与操作&#xff1b;第二种&#xff0c;调用Excel的COM组件。两种方式各有特点…

EXCEL 连接符的简单使用

在使用EXCEL处理大量表格数据的时候&#xff0c;学会【连接符】的使用很重要。 如下图所示&#xff1a; 如果我们需要在【A列】的内容后面加两个字【“编号”】两个字&#xff0c;我们就可以使用【连接符“&”】。 1&#xff1a;在B列的此处输入【】。 2&#xff1a;选中【…