Springboot使用腾讯云短信SDK发送短信

官方文档地址https://cloud.tencent.com/document/product/382/43194

一、环境准备

1.进入腾讯云短信控制台

https://console.cloud.tencent.com/smsv2/enterprise

2. 创建实名资质管理

3.创建签名

4.创建正文模板

5.创建应用

二、代码编写

1.Maven 导入SDK

bash 复制代码
        <dependency>
            <groupId>com.tencentcloudapi</groupId>
            <artifactId>tencentcloud-sdk-java</artifactId>
            <version>3.1.1112</version>
        </dependency>

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

2.编写短信发送配置方法

java 复制代码
    /**
     * 配置短信服务客户端
     *
     * @param secretId 腾讯云账号的SecretId,用于身份认证
     * @param secretKey 腾讯云账号的SecretKey,用于签名和身份验证
     * @return 返回配置好的短信服务客户端实例
     *
     * 本方法用于根据提供的腾讯云账号密钥(SecretId和SecretKey)初始化并配置短信服务(SMS)客户端
     * 客户端用于后续发送短信消息通过腾讯云的SMS服务
     */
    private SmsClient messageConfig(String secretId, String secretKey) {
        // SecretId、SecretKey 查询: https://console.cloud.tencent.com/cam/capi
        Credential cred = new Credential(secretId, secretKey);

        // 设置HTTP配置文件,包括请求方法、连接超时、读取超时等
        HttpProfile httpProfile = new HttpProfile();
        httpProfile.setReqMethod("GET");
        httpProfile.setConnTimeout(10);
        httpProfile.setWriteTimeout(10);
        httpProfile.setReadTimeout(10);
        httpProfile.setEndpoint("sms.tencentcloudapi.com");

        // 设置客户端配置文件,包括签名方法和HTTP配置
        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setSignMethod("HmacSHA256");
        clientProfile.setHttpProfile(httpProfile);
        
        // 使用凭证、区域和客户端配置创建短信服务客户端实例
        SmsClient client = new SmsClient(cred, "ap-nanjing",clientProfile);
        return  client;
    }

3.封装发送短信方法

java 复制代码
    /**
     * 发送短信
     *
     * @param phones 手机号码数组,采用 E.164 标准,格式为 +[国家或地区码][手机号]
     * @param templateData 模板参数数组,需要与模板 ID 对应的变量个数保持一致
     * @return 返回 true 表示发送成功,否则发送失败
     */
    public Boolean sendMessage(String[] phones,String[] templateData) {
        // 配置 SMS 客户端
        SmsClient smsClient = messageConfig(secretId, secretKey);
        SendSmsRequest req = new SendSmsRequest();

        // 设置应用 ID
        req.setSmsSdkAppId(sdkAppId);

        // 设置签名信息
        req.setSignName(signName);

        // 设置模板 ID
        req.setTemplateId(templateId);

        // 设置模板参数
        req.setTemplateParamSet(templateData);

        // 设置下发手机号码
        req.setPhoneNumberSet(phones);

        String code = "";
        try {
            // 发送短信并获取响应
            SendSmsResponse res = smsClient.SendSms(req);
            // 将响应结果转换为 JSON 字符串
            String jsonString = SendSmsResponse.toJsonString(res);
            // 解析 JSON 字符串
            JSONObject jsonObject = JSONObject.parseObject(jsonString);
            // 获取发送状态集合
            JSONArray sendStatusSet = jsonObject.getJSONArray("SendStatusSet");
            // 获取第一个发送状态对象
            JSONObject jsonObject1 = sendStatusSet.getJSONObject(0);
            // 获取发送状态码
            code = jsonObject1.getString("Code");
        } catch (TencentCloudSDKException e) {
            // 如果发生异常,抛出自定义异常
            throw new RuntimeException(e);
        }
        // 判断发送状态码是否为"Ok",表示发送成功
        if (code.equals("Ok") ){
            return true;
        }else {
            return false;
        }
    }

然后只要调用发送短信的方法,传入号码数组和模板id就行了

感谢阅读,关注必回关!!!

相关推荐
TG:@yunlaoda360 云老大16 分钟前
腾讯云国际站代理商:腾讯云负载均衡的健康探测源IP,我该如何诊断和配置?
服务器·云计算·腾讯云
JH307328 分钟前
jvm,tomcat,spring的bean容器,三者的关系
jvm·spring·tomcat
野犬寒鸦38 分钟前
从零起步学习MySQL || 第十章:深入了解B+树及B+树的性能优势(结合底层数据结构与数据库设计深度解析)
java·数据库·后端·mysql·1024程序员节
上进小菜猪40 分钟前
智能信创新范式:浙江省人民医院的全栈国产化与智能数据底座实践
后端
没有bug.的程序员2 小时前
Spring 常见问题与调试技巧
java·后端·spring·动态代理·1024程序员节
黎燃2 小时前
构筑自主可控医疗生态-数智融合新引擎-医疗全栈信创跃迁
后端
极光雨雨2 小时前
Java Spring MVC 中 WebMvcConfigurer 和 HandlerInterceptor之间的关系和用法案例
java·spring·mvc
R.lin2 小时前
OSS服务模块-基于数据库配置的Java OSS服务解决方案,支持MinIO、七牛云、阿里云和腾讯云
java·数据库·后端·mysql
TG:@yunlaoda360 云老大2 小时前
腾讯云国际站WAF:如何在腾讯云WAF上设置CC攻击防护,以保障业务数据免被恶意爬取?
服务器·云计算·腾讯云
_extraordinary_2 小时前
Java SpringAOP --- AOP的使用,AOP的源码
java·spring·1024程序员节