騰訊雲短信平臺每月贈送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
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 );