阿里雲短信服務(JAVA)


一,前言

​ 短信驗證碼想必大家都不陌生,在很多網站,APP中都有使用到。比如登錄,注冊,身份校驗等場景。不過通常情況下,短信服務都是外包給第三方公司的,接下來向大家分享如何使用阿里的短信服務。

二,雲通信

​ 阿里雲官網:https://www.aliyun.com/

​ 忘記說了,沒有賬號的可以直接使用阿里旗下的任何一款賬號進行登錄,支付寶,淘寶,釘釘等都可以,或者也可以單獨進行注冊,這里就不再講述如何注冊了。

​ 登錄成功以后,首頁如下,在上方搜索框中搜索短信服務:

​ 1,點擊短信服務控制台,如圖:

​ 2,點擊快速學習。

​ 顯示對號表示已經學習完成,如果是初次使用,可依此點擊上面的5個選項,按照提示完成操作即可。

​ 補充一點,使用阿里短信服務在賬戶中是必須要有余額,也就是先充值再消費。如圖點擊充值即可:

​ 3,以上步驟完成以后,在左側目錄點擊國內消息。首先進行簽名管理,然后添加模板管理。
切記,簽名管理通過后產生的AK一定要保存好,后期調用接口會用到。

​ 到這里為止,前期都是基本的准備工作,可能有些細節問題沒有描述到,但是按照官網的指示也基本差不多。然后再去看官網提供的API接口文檔說明。

三,API學習

3.1,基本參數介紹

​ 阿里短信API提供多種編程語言的DEMO,可以根據自己的需要進行選擇。

​ 其實阿里短信服務的API介紹的非常詳細,從上圖中可以看出,除了可以單獨給用戶發送短信,還支持批量發送,以及短信詳情查詢。首先我們可以先了解如何單獨給用戶發送驗證碼,請看下圖的基本參數:

​ 以上3個參數是調用API必須要填寫的,第一個參數為手機號,第二個參數為簽名。簽名就是之前說過的,申請簽名通過后的簽名名稱。而最后一個是模板代碼,同樣在上面介紹過模板申請通過后,會產生一個模板CODE。

3.2,引入SDK

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.1.0</version>
</dependency>

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
    <version>1.1.0</version>
</dependency>

3.3,示例代碼(官網提供)

//設置超時時間-可自行調整
   System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
        System.setProperty("sun.net.client.defaultReadTimeout", "10000");
        //初始化ascClient需要的幾個參數
        final String product = "Dysmsapi";//短信API產品名稱(短信產品名固定,無需修改)
        final String domain = "dysmsapi.aliyuncs.com";//短信API產品域名(接口地址固定,無需修改)
        //替換成你的AK
        //final String accessKeyId = "yourAccessKeyId";//你的accessKeyId,參考本文檔步驟2
        // final String accessKeySecret = "yourAccessKeySecret";//你的accessKeySecret,參考本文檔步驟2
        //初始化ascClient,暫時不支持多region(請勿修改)
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
                accessKeySecret);
        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
        IAcsClient acsClient = new DefaultAcsClient(profile);
        //組裝請求對象
        SendSmsRequest request = new SendSmsRequest();


        //使用post提交
        request.setMethod(MethodType.POST);
        //1,必填:待發送手機號。支持以逗號分隔的形式進行批量調用,批量上限為1000個手機號碼,批量調用相對於單條調用及時性稍有延遲,驗證碼類型的短信推薦使用單條調用的方式;發送國際/港澳台消息時,接收號碼格式為國際區號+號碼,如“85200000000”
        request.setPhoneNumbers("");
        //2,必填:短信簽名-可在短信控制台中找到
        request.setSignName("");
        //3,必填:短信模板-可在短信控制台中找到,發送國際/港澳台消息時,請使用國際/港澳台短信模版
        request.setTemplateCode("");
        //可選:模板中的變量替換JSON串,如模板內容為"親愛的${name},您的驗證碼為${code}"時,此處的值為
        //友情提示:如果JSON中需要帶換行符,請參照標准的JSON協議對換行符的要求,比如短信內容中包含\r\n的情況在JSON中需要表示成\\r\\n,否則會導致JSON在服務端解析失敗
        request.setTemplateParam("");
        SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);

        // 判斷是否發送成功
        if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
            //請求成功
            System.out.println("返回的狀態碼:" + sendSmsResponse.getCode());
            System.out.println("返回的信息:" + sendSmsResponse.getMessage());
        }

​ 將以上的3個參數填成自己的,啟動工程便可以成功發送短信。

​ 結果如圖所示:

    ![](https://img2018.cnblogs.com/blog/1655301/201908/1655301-20190815203410419-327235263.jpg)

四,總結

​ 是不是調用很簡單,但是在真正的項目中還是要進一步優化,尤其在分布式項目中調用。比如將參數抽取到配置文件,及抽取成工具類等。

​ 最后由於時間倉促只是簡短的記錄,有很多細節沒有為大家分享到,所以如果遇到什么問題可以在下方留言,看到后會第一時間回復。感謝閱讀!


免責聲明!

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



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