腾讯云短信平台每月赠送100条免费短信,相对来说用于开发还是挺不错的,并且像这样的大平台提供的服务也是相对稳定的。
1.打开腾讯云控制台-短信
https://console.cloud.tencent.com/sms/smslist
2.选择添加应用,打开后输入相应的内容即可,一句话描述一下你的应用即可
3.添加成功后,点击应用的标题进入详情页面,在这里你可以看见你的appid(SDK AppID)和appkey(App Key)
4.申请一个短信签名,短信签名是指每次短信中用括号括起来的部分,比如移动发来的短信每次都会有【中国移动】
签名类型选适合自己的,然后上传对应的资料即可
在签名创建成果后,再切换到短信正文,添加短信正文,审核通过后就能正常使用了。
SDK官方引入教程:
https://cloud.tencent.com/document/product/382/13613
最后分享一个自用工具类
SmsUtil .java
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import com.xiaobao.pojo.Msg;
import org.json.JSONException;
import org.json.JSONObject;
import javax.json.Json;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public abstract class SmsUtil {
// 短信应用SDK AppID
int appid = 0; // 1400开头
// 短信应用SDK AppKey
String appkey ="" ;
// 短信模板ID,需要在短信应用中申请
int templateId = 0; // NOTE: 这里的模板ID`7839`只是一个示例,真实的模板ID需要在短信控制台中申请
// 签名
String smsSign = "腾讯云"; // NOTE: 这里的签名"腾讯云"只是一个示例,真实的签名需要在短信控制台中申请,另外签名参数使用的是`签名内容`,而不是`签名ID`
public Msg sendMsg(String phone, int code) {
Msg msg = new Msg();
msg.setCode(1001);
try {
String[] params = {code + "", 5 + ""};//数组具体的元素个数和模板中变量个数必须一致,例如事例中templateId:5678对应一个变量,参数数组中元素个数也必须是一个
SmsSingleSender ssender = new SmsSingleSender(appid, appkey);
SmsSingleSenderResult result = ssender.sendWithParam("86", phone,
templateId, params, smsSign, "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信
//System.out.println(result);
JSONObject jsonObject = new JSONObject(result.toString());
int recode = jsonObject.getInt("result");
switch (recode) {
case 0:
msg.setCode(1000);
msg.setMsg("短信验证码发送成功!");
success();
break;
case 1016:
msg.setCode(1016);
msg.setMsg("手机号格式错误!");
break;
case 1023:
msg.setCode(1023);
msg.setMsg("请在60s后重试!");//30s内短信已达上限!
break;
case 1024:
msg.setCode(1024);
msg.setMsg("请在1小时后重试!");//1小时内短信已达上限
break;
default:
msg.setCode(1001);
msg.setMsg("错误码" + recode + ",请带上您的错误码反馈给客服");
}
// msg.setMsg(result.toString());
} catch (HTTPException e) {
// HTTP响应码错误
e.printStackTrace();
msg.setMsg("HTTP响应码错误");
} catch (JSONException e) {
// json解析错误
e.printStackTrace();
msg.setMsg("json解析错误!");
} catch (IOException e) {
// 网络IO错误
e.printStackTrace();
msg.setMsg("网络IO错误!");
}
return msg;
}
public abstract void success();
}
msg.java
扫描二维码关注公众号,回复:
4543753 查看本文章
package com.xiaobao.pojo;
//消息
public class Msg {
private int code;
private String msg;
private Object body;
public Msg() {
this.code = 101;
this.msg = "系统未知错误!";
}
public Msg(int code, String msg) {
this.code = code;
this.msg = msg;
}
public Msg(int code, String msg, Object body) {
this.code = code;
this.msg = msg;
this.body = body;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getBody() {
return body;
}
public void setBody(Object body) {
this.body = body;
}
@Override
public String toString() {
return "Msg{" +
"code=" + code +
", msg='" + msg + '\'' +
", body=" + body +
'}';
}
}
调用演示
SmsUtil smsUtil = new SmsUtil() {
@Override
public void success() {
//验证码发送成功处理的操作 比如将发送信息保存数据库
}
};
Msg msg=smsUtil.sendMsg("155667788",5523 );