Spring Boot騰訊雲短信申請與使用示例

1.在pom.xml文件中添加依賴

<dependency>
     <groupId>com.tencentcloudapi</groupId>
     <artifactId>tencentcloud-sdk-java</artifactId>
     <version>3.1.270</version>
</dependency>

2.新建SmsConstant常量類保存需要用到的常量

public class SmsConstant {
    public  static final String SDKAPPID = "";
    public  static final String SECRETID = "";
    public  static final String SECRETKEY = "";
    public  static final String SIGNNAME  = "";
    public  static final String TEMPLATEID  = "";
}

下面說明一下以上各個值如何獲取

2.1.點擊進入騰訊雲短信服務官網

在這裡插入圖片描述


在這裡插入圖片描述

2.2.點擊進入騰訊雲短信控制臺
SDKAPPID 就是下圖中的SDKAppID,沒有就創建

在這裡插入圖片描述

2.3.點擊進入 API密鑰管理
SECRETID 和SECRETKEY 就是下圖中的SecretID 和 SecretKey

在這裡插入圖片描述

2.4.創建簽名,等待審核

在這裡插入圖片描述

SIGNNAME 就是下圖中的內容

在這裡插入圖片描述

2.5.創建正文模板,等待審核
TEMPLATEID 就是下圖中的ID

在這裡插入圖片描述

3.新建SendSmsUtil工具類

import com.admin.common.constant.SmsConstant;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;

//導入可選配置類
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;

// 導入對應SMS模塊的client
import com.tencentcloudapi.sms.v20210111.SmsClient;

// 導入要請求接口對應的request response類
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;

public class SendSmsUtil {
    public static void sendSms(String phoneNumber, String verificationCode) {
        try {
            /* 必要步驟:
             * 實例化一個認證對象,入參需要傳入騰訊雲賬戶密鑰對secretId,secretKey。
             * 這裡采用的是從環境變量讀取的方式,需要在環境變量中先設置這兩個值。
             * 你也可以直接在代碼中寫死密鑰對,但是小心不要將代碼復制、上傳或者分享給他人,
             * 以免泄露密鑰對危及你的財產安全。
             * CAM密匙查詢: https://console.cloud.tencent.com/cam/capi*/
            Credential cred = new Credential(SmsConstant.SECRETID, SmsConstant.SECRETKEY);

            // 實例化一個http選項,可選,沒有特殊需求可以跳過
            HttpProfile httpProfile = new HttpProfile();
            // 設置代理
            // httpProfile.setProxyHost("真實代理ip");
            // httpProfile.setProxyPort(真實代理端口);
            /* SDK默認使用POST方法。
             * 如果你一定要使用GET方法,可以在這裡設置。GET方法無法處理一些較大的請求 */
            httpProfile.setReqMethod("POST");
            /* SDK有默認的超時時間,非必要請不要進行調整
             * 如有需要請在代碼中查閱以獲取最新的默認值 */
            httpProfile.setConnTimeout(60);
            /* SDK會自動指定域名。通常是不需要特地指定域名的,但是如果你訪問的是金融區的服務
             * 則必須手動指定域名,例如sms的上海金融區域名: sms.ap-shanghai-fsi.tencentcloudapi.com */
            httpProfile.setEndpoint("sms.tencentcloudapi.com");

            /* 非必要步驟:
             * 實例化一個客戶端配置對象,可以指定超時時間等配置 */
            ClientProfile clientProfile = new ClientProfile();
            /* SDK默認用TC3-HMAC-SHA256進行簽名
             * 非必要請不要修改這個字段 */
            clientProfile.setSignMethod("HmacSHA256");
            clientProfile.setHttpProfile(httpProfile);
            /* 實例化要請求產品(以sms為例)的client對象
             * 第二個參數是地域信息,可以直接填寫字符串ap-guangzhou,或者引用預設的常量 */
            SmsClient client = new SmsClient(cred, "ap-guangzhou", clientProfile);
            /* 實例化一個請求對象,根據調用的接口和實際情況,可以進一步設置請求參數
             * 你可以直接查詢SDK源碼確定接口有哪些屬性可以設置
             * 屬性可能是基本類型,也可能引用瞭另一個數據結構
             * 推薦使用IDE進行開發,可以方便的跳轉查閱各個接口和數據結構的文檔說明 */
            SendSmsRequest req = new SendSmsRequest();

            /* 填充請求參數,這裡request對象的成員變量即對應接口的入參
             * 你可以通過官網接口文檔或跳轉到request對象的定義處查看請求參數的定義
             * 基本類型的設置:
             * 幫助鏈接:
             * 短信控制臺: https://console.cloud.tencent.com/smsv2
             * sms helper: https://cloud.tencent.com/document/product/382/3773 */

            /* 短信應用ID: 短信SdkAppId在 [短信控制臺] 添加應用後生成的實際SdkAppId,示例如1400006666 */
            String sdkAppId = SmsConstant.SDKAPPID;
            req.setSmsSdkAppId(sdkAppId);

            /* 短信簽名內容: 使用 UTF-8 編碼,必須填寫已審核通過的簽名,簽名信息可登錄 [短信控制臺] 查看 */
            String signName = SmsConstant.SIGNNAME;
            req.setSignName(signName);

            /* 國際/港澳臺短信 SenderId: 國內短信填空,默認未開通,如需開通請聯系 [sms helper] */
            String senderid = "";
            req.setSenderId(senderid);

            /* 用戶的 session 內容: 可以攜帶用戶側 ID 等上下文信息,server 會原樣返回 */
            String sessionContext = "xxx";
            req.setSessionContext(sessionContext);

            /* 短信號碼擴展號: 默認未開通,如需開通請聯系 [sms helper] */
            String extendCode = "";
            req.setExtendCode(extendCode);

            /* 模板 ID: 必須填寫已審核通過的模板 ID。模板ID可登錄 [短信控制臺] 查看 */
            String templateId = SmsConstant.TEMPLATEID;
            req.setTemplateId(templateId);

            /* 下發手機號碼,采用 E.164 標準,+[國傢或地區碼][手機號]
             * 示例如:+8613711112222, 其中前面有一個+號 ,86為國傢碼,13711112222為手機號,最多不要超過200個手機號 */
            String[] phoneNumberSet = {"+86" + phoneNumber};
            req.setPhoneNumberSet(phoneNumberSet);

            /* 模板參數: 若無模板參數,則設置為空 */
            String[] templateParamSet = {verificationCode};
            req.setTemplateParamSet(templateParamSet);

            /* 通過 client 對象調用 SendSms 方法發起請求。註意請求方法名與請求對象是對應的
             * 返回的 res 是一個 SendSmsResponse 類的實例,與請求對象對應 */
            SendSmsResponse res = client.SendSms(req);

            // 輸出json格式的字符串回包
            System.out.println(SendSmsResponse.toJsonString(res));

            // 也可以取出單個值,你可以通過官網接口文檔或跳轉到response對象的定義處查看返回字段的定義
            System.out.println(res.getRequestId());

        } catch (TencentCloudSDKException e) {
            e.printStackTrace();
        }
    }
}

在這裡插入圖片描述

到此這篇關於Spring Boot騰訊雲短信申請與使用的文章就介紹到這瞭,更多相關Spring Boot騰訊雲短信內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: