java發送手機驗證碼實現


前言

本文首發於公眾號【我的小碗湯】本公眾號免費提供csdn下載服務,海量IT學習資源,如果你准備入IT坑,勵志成為優秀的程序猿,那么這些資源很適合你,包括但不限於java、go、python、springcloud、elk、嵌入式 、大數據、面試資料、前端 等資源。掃碼關注:

image

正文

今天來用java實現手機驗證碼的發送。

短信平台有很多,中國網建提供的SMS短信通,注冊免費5條短信,3條彩信,

http://sms.webchinese.cn/

但是剛才試了,第一次用官方提供的demo發送成功,然后整合到自己項目中,調試時由於參數配置錯誤導致發送了幾次失敗后,5次就用完了。按理說成功才能算一次,果斷放棄。

然后試了一下騰訊雲SMS平台,每月可以免費發送100條國內短信

https://cloud.tencent.com/product/sms

image

首先需要注冊騰訊雲賬號,注冊時可以微信認證,認證時支付1分錢驗證是人為操作,這一分錢注冊成功后會放到賬戶中。

image

注冊后,需要添加一個應用,這個隨便寫,創建好后點擊 -> 應用名稱,然看AppID和AppKey,這個比較重要,調用短信API接口時需要提供。

image

然后需要在 -> 國內短信 -> 短信內容配置 -> 短信簽名中創建簽名和短信正文中創建正文模板。

image

image

一個完整的短信由短信簽名和短信正文內容兩部分組成,您可以根據業務需求分別設置不同的短信正文內容模板,然后進行組合形成最終展示。短信簽名+短信正文內容=最終顯示內容

審核可能得需要花一段時間,我創建后,審核只花了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

image

以下有很多錯誤碼,可以供排查問題參考:

image

正常情況下,返回的result為0時表示發送成功,這也是100條次數減1的參考。按照接口要求修改參數后,發送短信成功。

image

image

也有很多其他平台提供的短信服務,比如阿里雲可以參考以下文章:

https://blog.csdn.net/u014520797/article/details/54411392

大福利:

針對關注本公號的小伙伴,長期提供免費csdn下載服務,以及各種學習資源收集查找,免費贈送,無套路,加以下任意一個二維碼為好友索取,請備注【資源】

我的二維碼:

image



最后,csdn資源,收集了海量學習資料,如果你准備入IT坑,勵志成為優秀的程序猿,那么這些資源很適合你,包括java、go、python、springcloud、elk、嵌入式 、大數據、面試資料、前端等資源。同時我們組建了一個技術交流群,里面有很多大佬,會不定時分享技術文章,如果你想來一起學習提高,可以關注以下公眾號后回復【2】,獲取。


我是小碗湯,我們一起學習,掃碼關注,精彩內容第一時間推給你
歡迎掃碼關注


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM