短信属于三大运营商的垄断资源,只有通过三大运营商的短信通道才能让短信验证码以接近100%效率到达用户手中。所以一般为了方便起见,我们多数会找一些发送短信验证码的平台,这些平台有的是有API接口的,有的是直接人工操作群发。
下面我们开始今天的正题,使用Java实现短信验证码的发送
短信验证码平台
短信验证码的平台有很多,这里放两个我自己用过的两个平台
- 阿里云(这个链接放下面了)
- 臻子云
其实API接口的使用方法在官网都有详细的文档,我下面就以 臻子云 为例再赘述一下
1. 阿里云
就我而言,阿里云下我用过两个
(1) API市场>生活服务下的【三网106短信】
(2) API市场>公共事务下的【三网短信验证码】
要说区别可能就是收费不同吧,反正试了一下都能收到,可以根据自己的需求来选择。
下面详细说一下臻子云的使用
2. 臻子云
在放一下传送门
注册就不多说了
登录以后会看到:
可以在财务管理中进行充值,这个平台当时是20元540条短信
短信平台的基本情况就这样,下面开始使用API发送短信的
臻子云SDK开发文档 , 进去可以看到支持比较多的语言也有一些样例和视频教程,下面开始正式的使用
臻子云API发送短信API的使用(Java)
-
下载jar包
-
导入jar包
如果是做javaweb开发的小伙伴,这里我使用的是IDEA2021,有关IDEA的一些配置请【移步】[IDEA 2021] IDEA2021 安装、配置、常用快捷键另:IDEA2021的javaWeb项目的项目结构相对比于之前的版本有一些不同,如果对项目结构不太清楚的小伙伴,可以移步:【IntelliJ IDEA2021】 JavaWeb项目结构
我们先导入jar包
-
通过AppId 和 AppSecret 来创建自己短信发送的实例
import com.zhenzi.sms.ZhenziSmsClient; public class PhoneCode { //这里我是个人开发者,使用这个apiUrl final String apiUrl = "https://sms_developer.zhenzikj.com"; final String appId = ""; // 这里填写刚才看到的AppId final String appSecret = ""; // 这里填写刚才看到的AppSecret ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret); }
apiUrl为请求地址,个人开发者使用https://sms_developer.zhenzikj.com,企业开发者使用https://sms.zhenzikj.com
-
编写一个短信模板
编写完后需要等待审核通过,就可以进行使用了 -
编写一个发送短信的函数
我们需要知道短信模板的id
/* * @Author YJR-1100 * @Description //TODO * @Date 15:15 * @param * number---手机号 * style---要使用的短信模板 * code---发送的短信验证码 * @return **/ public String sendCode(String number,String style,String code) throws Exception { Map<String, Object> params = new HashMap<String, Object>(); //首先传入我们要发送的手机号 params.put("number", number); // 可以根据不同的状态选择不同的短信模板, if(style.equals("register")){ // params.put("templateId", "{这里是刚才看到的短信模板的ID}"); }else { params.put("templateId", "{这里是刚才看到的另一个短信模板的ID}"); } // 如果只有一个短信模板,我们可以直接使用下面的代码绑定一个固定的模板 // params.put("templateId", "7297"); // 这里设置刚才模板中留出来的两个参数的位置,在我的模板里是验证码和有效时间 String[] templateParams = new String[2]; // 传入验证码和有效时间 templateParams[0] = code; templateParams[1] = "5分钟"; // 把参数放入map中 params.put("templateParams", templateParams); //调用send方法,进行发送 String result = client.send(params); // 这里返回json格式的字符串,可以判断是否发送成功 return result; }
最后调用函数进行短信的发送
-
一些其他参数
更多使用细节请看臻子云SDK开发文档
关于短信验证码的发送就到这里吧,欢迎各位路过的大佬评论批评指正,如果觉得本文对你有帮助,希望占用大家一点小时间给我点个赞吧,感谢😛😛😛