java發送手機驗證碼實現

正文

今天來用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相關資源。

掃碼關注,精彩內容第一時間推給你

image

相關文章
相關標籤/搜索