springboot整合腾讯云短信服务

本文通过详细代码展示springboot项目如何整合腾讯云短信服务

1.添加依赖

       <!--腾讯云短信服务-->
       <dependency>
           <groupId>com.tencentcloudapi</groupId>
           <artifactId>tencentcloud-sdk-java</artifactId>
       </dependency>

2.发送短信的核心代码

package com.enterprise.lk.portal.utils;

import com.enterprise.lk.portal.model.Sms;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;

// 导入 SMS 模块的 client
import com.tencentcloudapi.sms.v20190711.SmsClient;

// 导入要请求接口对应的 request response 类
import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

/**
 * Tencent Cloud Sms Sendsms
 * https://cloud.tencent.com/document/product/382/38778
 */
@Slf4j
@Component
@Configuration
public class SendSms {
    
    

    @Value("${tencentcloud.sms.secretId}")
    private String secretId;
    @Value("${tencentcloud.sms.secretKey}")
    private String secretKey;
    @Value("${tencentcloud.sms.appId}")
    private String appId;

    public void sendPhoneTextMsg(Sms sms) {
    
    
        try {
    
    
            /* 必要步骤:
             * 实例化一个认证对象,入参需要传入腾讯云账户密钥对 secretId 和 secretKey
             * CAM 密钥查询:https://console.cloud.tencent.com/cam/capi*/
            Credential cred = new Credential(secretId, secretKey);

            /* 实例化 SMS 的 client 对象
             * 第二个参数是地域信息,可以直接填写字符串 ap-guangzhou,或者引用预设的常量 */
            SmsClient client = new SmsClient(cred, "");
            /* 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
             * 您可以直接查询 SDK 源码确定接口有哪些属性可以设置
             * 属性可能是基本类型,也可能引用了另一个数据结构 */
            SendSmsRequest req = new SendSmsRequest();

            /* 短信应用 ID: 在 [短信控制台] 添加应用后生成的实际 SDKAppID,例如1400006666 */
            String appid = appId;
            req.setSmsSdkAppid(appid);

            /* 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息 */
            String sign = sms.getSign();
            req.setSign(sign);

            /* 模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID */
            String templateID = sms.getTemplateId();
            req.setTemplateID(templateID);

            /* 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
             * 例如+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号*/
            req.setPhoneNumberSet(sms.getMobile());

            /* 模板参数: 若无模板参数,则设置为空*/
            req.setTemplateParamSet(sms.getParams());

            /* 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
             * 返回的 res 是一个 SendSmsResponse 类的实例,与请求对象对应 */
            SendSmsResponse res = client.SendSms(req);

            // 输出 JSON 格式的字符串回包
            log.info(SendSmsResponse.toJsonString(res));
            // 可以取出单个值,您可以通过官网接口文档或跳转到 response 对象的定义处查看返回字段的定义
            log.info(res.getRequestId());

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

3.短信参数的javaBean代码

package com.enterprise.lk.portal.model;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 短信参数
 */
@Data
@Accessors(chain = true)
public class Sms {
    
    

    /**
     * 签名
     */
    private String sign ;
    /**
     * 模板
     */
    private String templateId;
    /**
     * 手机号
     */
    private String[] mobile;
    /**
     * 模板参数 {}
     */
    private String[] params;
}
# 腾讯云短信平台
tencentcloud.sms.secretId=**********
tencentcloud.sms.secretKey=**********
tencentcloud.sms.appId=**********

参考:腾讯云官方文档

猜你喜欢

转载自blog.csdn.net/qq_44625080/article/details/109896499