前言
本文首發於公眾號【我的小碗湯】本公眾號免費提供csdn下載服務,海量IT學習資源,如果你准備入IT坑,勵志成為優秀的程序猿,那么這些資源很適合你,包括但不限於java、go、python、springcloud、elk、嵌入式 、大數據、面試資料、前端 等資源。掃碼關注:
正文
今天來用java實現手機驗證碼的發送。
短信平台有很多,中國網建提供的SMS短信通,注冊免費5條短信,3條彩信,
但是剛才試了,第一次用官方提供的demo發送成功,然后整合到自己項目中,調試時由於參數配置錯誤導致發送了幾次失敗后,5次就用完了。按理說成功才能算一次,果斷放棄。
然后試了一下騰訊雲SMS平台,每月可以免費發送100條國內短信
https://cloud.tencent.com/product/sms
首先需要注冊騰訊雲賬號,注冊時可以微信認證,認證時支付1分錢驗證是人為操作,這一分錢注冊成功后會放到賬戶中。
注冊后,需要添加一個應用,這個隨便寫,創建好后點擊 -> 應用名稱,然看AppID和AppKey,這個比較重要,調用短信API接口時需要提供。
然后需要在 -> 國內短信 -> 短信內容配置 -> 短信簽名中創建簽名和短信正文中創建正文模板。
一個完整的短信由短信簽名和短信正文內容兩部分組成,您可以根據業務需求分別設置不同的短信正文內容模板,然后進行組合形成最終展示。短信簽名+短信正文內容=最終顯示內容
審核可能得需要花一段時間,我創建后,審核只花了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下載服務,以及各種學習資源收集查找,免費贈送,無套路,加以下任意一個二維碼為好友索取,請備注【資源】
我的二維碼:
最后,csdn資源,收集了海量學習資料,如果你准備入IT坑,勵志成為優秀的程序猿,那么這些資源很適合你,包括java、go、python、springcloud、elk、嵌入式 、大數據、面試資料、前端等資源。同時我們組建了一個技術交流群,里面有很多大佬,會不定時分享技術文章,如果你想來一起學習提高,可以關注以下公眾號后回復【2】,獲取。
我是小碗湯,我們一起學習,掃碼關注,精彩內容第一時間推給你