今天来用java实现手机验证码的发送。前端
短信平台有不少,中国网建提供的SMS短信通,注册免费5条短信,3条彩信,java
http://sms.webchinese.cn/node
可是刚才试了,第一次用官方提供的demo发送成功,而后整合到本身项目中,调试时因为参数配置错误致使发送了几回失败后,5次就用完了。按理说成功才能算一次,果断放弃。python
而后试了一下腾讯云SMS平台,每个月能够免费发送100条国内短信git
https://cloud.tencent.com/product/smsgithub
首先须要注册腾讯云帐号,注册时能够微信认证,认证时支付1分钱验证是人为操做,这一分钱注册成功后会放到帐户中。web
注册后,须要添加一个应用,这个随便写,建立好后点击 -> 应用名称,然看AppID和AppKey,这个比较重要,调用短信API接口时须要提供。面试
而后须要在 -> 国内短信 -> 短信内容配置 -> 短信签名中建立签名和短信正文中建立正文模板。spring
一个完整的短信由短信签名和短信正文内容两部分组成,您能够根据业务需求分别设置不一样的短信正文内容模板,而后进行组合造成最终展现。短信签名+短信正文内容=最终显示内容编程
审核可能得须要花一段时间,我建立后,审核只花了2小时不到。这些步骤作完以后,就能够根据官方提供的API接口发送短信了。
*https://cloud.tencent.com/document/product/382/5808*
官方提供了java、python、c#、node.js的SDK,这里用java的SDK调用,这里有详细说明:
*https://github.com/qcloudsms/qcloudsms_java*
首先加入maven依赖:
<dependency>
<groupId>com.github.qcloudsms</groupId>
<artifactId>qcloudsms</artifactId>
<version>1.0.4</version>
</dependency>复制代码
编写调用SDK的代码:
/**
* 腾讯云短信,100条一个月
* 方法说明
*
* @param phone
* @return void
* @Discription:扩展说明
* @throws HTTPException http status exception
* @throws IOException network problem
*/
public static void sendMsgByTxPlatform(String phone) throws Exception {
// 短信应用SDK AppID
// 1400开头
int appId = 1402126548;
// 短信应用SDK AppKey
String appKey = "b67d0bf7876c1d42121ca561953532";
// 须要发送短信的手机号码
// String[] phoneNumbers = {"15212111830"};
// 短信模板ID,须要在短信应用中申请
//NOTE: 这里的模板ID`7839`只是一个示例,真实的模板ID须要在短信控制台中申请
int templateId = 148464;
// 签名
// NOTE: 这里的签名"腾讯云"只是一个示例,真实的签名须要在短信控制台中申请,另外签名参数使用的是`签名内容`,而不是`签名ID`
String smsSign = "个人小碗汤";
SmsSingleSender sSender = new SmsSingleSender(appId, appKey);
//第一个参数0表示普通短信,1表示营销短信
SmsSingleSenderResult result = sSender.send(0, "86",
phone,
RandomCodeUtils.getSixValidationCode() + "为您的登陆验证码,请于" + 10 + "分钟内填写。如非本人操做,请忽略本短信。", "", "");
if (result.result != 0) {
throw new Exception("send phone validateCode is error" + result.errMsg);
}
}复制代码
参数说明:
@param type 短信类型,0 为普通短信,1 营销短信,须要和刚才页面上提交的短信正文下的类型一致
@param nationCode 国家码,如 86 为中国
@param phoneNumber 不带国家码的手机号
@param msg 信息内容,必须与申请的模板格式一致,不然将返回错误,{1}占位符可在代码中用实际须要发送的值替换
@param extend 扩展码,可填空
@param ext 服务端原样返回的参数,可填空复制代码
编写好之后用测试类测试时,返回错误码1014,能够点击错误描述中的连接去查看可能的缘由。我是因为正文内容和刚才页面上提交的正文不同致使的。
https://cloud.tencent.com/document/product/382/3771
如下有不少错误码,能够供排查问题参考:
正常状况下,返回的result为0时表示发送成功,这也是100条次数减1的参考。按照接口要求修改参数后,发送短信成功。
也有不少其余平台提供的短信服务,好比阿里云能够参考如下文章:
*https://blog.csdn.net/u014520797/article/details/54411392*
本公众号免费提供csdn下载服务,海量IT学习资源,若是你准备入IT坑,励志成为优秀的程序猿,那么这些资源很适合你,包括但不限于java、go、python、springcloud、elk、嵌入式 、大数据、面试资料、前端 等资源。同时咱们组建了一个技术交流群,里面有不少大佬,会不定时分享技术文章,若是你想来一块儿学习提升,能够公众号后台回复【2】,免费邀请加技术交流群互相学习提升,会不按期分享编程IT相关资源。
扫码关注,精彩内容第一时间推给你