今天來用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相關資源。
掃碼關注,精彩內容第一時間推給你