极速指南:在 SpringBoot 中快速集成腾讯云短信功能

news2024/9/26 5:15:43

前言

今天分享一个SpringBoot集成腾讯云短信的功能,平常除了工作,很多xdm做自己的小项目都可能用到短信,但自己去看文档挺费劲的,我这边就帮你节省时间,直接把步骤给你列出来,照做就行。

实战

1、申请密钥及签名模板

首先,要使用腾讯云短信,你得先在腾讯云有个账号,申请密钥及签名模板。

1)、找到访问管理-API密钥管理,勿泄漏。

image


2)、签名及模板

要申请,推荐用公众号,描述中写几句赞美腾讯云的话,几分钟后就可以过审了。

image

image


3)、应用SDK APPID

image


4)、短信工具类

应用ID、签名、模板id都从上面找到后改为自己的就行了。

image

2、代码集成

腾讯云短信官方文档:https://cloud.tencent.com/document/product/382/43194


1)、引入依赖

一般在common模块中引入即可

<!-- 腾讯云短信 -->
<!--请到https://search.maven.org/search?q=tencentcloud-sdk-java查询所有版本,最新版本如下-->
<dependency>
    <groupId>com.tencentcloudapi</groupId>
    <artifactId>tencentcloud-sdk-java</artifactId>
    <version>3.1.714</version>
</dependency>

2)、新增properties配置

一般这种第三方接入的配置使用properties较好,和yml配置做区分。密钥参考前面的说明。

image


3)、新增配置类

package com.imooc.utils;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@Component
@Data
@PropertySource("classpath:tencentCloud.properties")
@ConfigurationProperties(prefix = "tencent.cloud")
public class TencentCloudProperties {

    private String secretId;
    private String secretKey;

}

4)、短信工具类

从官网拷过来修改即可,记得修改其中的应用ID、签名、模板id。

package com.imooc.utils;

import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.sms.v20210111.SmsClient;
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class SMSUtils {
    @Autowired
    private TencentCloudProperties tencentCloudProperties;

    public void sendSMS(String phone, String code) throws Exception {
    
        try {
        
            /* 必要步骤:
             * 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
             * 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
             * 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
             * 以免泄露密钥对危及你的财产安全。
             * CAM密匙查询获取: https://console.cloud.tencent.com/cam/capi
             */
            Credential cred = new Credential(tencentCloudProperties.getSecretId(),
                tencentCloudProperties.getSecretKey());

            // 实例化一个http选项,可选的,没有特殊需求可以跳过
            HttpProfile httpProfile = new HttpProfile();

            // httpProfile.setReqMethod("POST"); // 默认使用POST

            /* 
             * SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务
             * 则必须手动指定域名,例如sms的上海金融区域名: sms.ap-shanghai-fsi.tencentcloudapi.com 
             */
            httpProfile.setEndpoint("sms.tencentcloudapi.com");

            // 实例化一个client选项
            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);
            // 实例化要请求产品的client对象,clientProfile是可选的
            SmsClient client = new SmsClient(cred, "ap-nanjing", clientProfile);

            // 实例化一个请求对象,每个接口都会对应一个request对象
            SendSmsRequest req = new SendSmsRequest();
            String[] phoneNumberSet1 = {
                "+86" + phone
            }; //电话号码
            req.setPhoneNumberSet(phoneNumberSet1);
            req.setSmsSdkAppId("xxx"); // 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId
            req.setSignName("Java分享XX"); // 签名
            req.setTemplateId("xxx"); // 模板id:必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看

            /* 模板参数(自定义占位变量): 若无模板参数,则设置为空 */
            String[] templateParamSet1 = {
                code
            };
            req.setTemplateParamSet(templateParamSet1);

            // 返回的resp是一个SendSmsResponse的实例,与请求对象对应
            SendSmsResponse resp = client.SendSms(req);
            // 输出json格式的字符串回包
            // System.out.println(SendSmsResponse.toJsonString(resp));
        }
        catch (TencentCloudSDKException e) {
            System.out.println(e.toString());
        }
    }
}

5)、测试效果

在服务中写一个方法测试即可,然后启动网关和user服务,访问 http://127.0.0.1:8000/u/sms 等一会儿就有短信通知了。

@Autowired
private SMSUtils smsUtils;

@GetMapping("sms")
public Object sendSMS() throws Exception {

    smsUtils.sendSMS("159xxxxxxxx", "6752");

    return "sendSMS OK!";
}

总结

集成第三方的短信接口其实很简单,费时间的主要是申请一些东西,以及阅读接口文档。

大家如果想省事,按照我的步骤来就行,接入个短信功能,也花不了什么钱。既可以体验下接入方式,也可以为自己的小项目增加一些亮点。

好了,今天的小知识你学会了吗?


喜欢请点赞+关注↓↓↓,持续分享干货哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1151574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python_PyQt5日周月K线纵向对齐显示_2_显示工具

目录 写在前面&#xff1a; 结果显示&#xff1a; 代码&#xff1a; 计算日数据、周数据&#xff0c;月数据&#xff0c;并返回 生成提示信息数据&#xff0c;同时将日周月合并到一个DataFrame中 返回K线图和成交量柱状图的数据 主界面&#xff0c;显示日周月对齐的K线图…

【思考】为什么要有随机分析,为什么要有频域变换

问&#xff1a;为什么要有随机分析&#xff0c;为什么要有频域变换&#xff1f; 答&#xff1a;因为原有的时域方法很难描述一些信号或噪声。 例如这样一个信号 如果要写出时域公式&#xff0c;简直是太复杂了&#xff0c;怎么描述它呢。一是从0时刻开始指数衰减。二是可以说…

基于SpringBoot的科研工作量管理系统

目录 前言 一、技术栈 二、系统功能介绍 管理员功能介绍 科研项目列表 项目论文信息管理 项目类型管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 四、系统测试 概要 系统测试的特点  系统功能测试 登录功能测试 添加项目类型功能测试 测试结果分…

微信一次性群发1000条消息:高效沟通的秘诀

在当今数字化时代&#xff0c;微信作为一款广受欢迎的社交应用程序&#xff0c;为人们提供了便捷的沟通方式。在微信中&#xff0c;一次性群发1000条消息似乎是一个不可能完成的任务&#xff0c;因为微信自带的群发功能是只能一次性最多群发200人的&#xff0c;那么有没有什么工…

uni-app打包之如何生成自由证书

我是使用Android Studio来直接生成。超级简单 第一步 打开 Android Studio 找到下面图片 第二步 选 Android App Bund 然后Next 第三步 选择创建新的 第四步 填写对应的 信息 密码最好都是一样的 第五步 点击ok 即可创建成功。 uniapp打包时候勾选文件 &#xff08;如果公…

C语言 指针进阶笔记

p和*p: 如图&#xff0c;p是指针&#xff0c;指针存放着地址&#xff0c;打印出来应该是数组的值 *p是指针里里面的元素 #include<stdio.h> int main() {int a1;int b2;int c3;int p[3]{a,b,c};printf("%d",*p); return 0; } 那么现在的打印结果应该为数组的…

线程是如何创建的

线程不是一个完全由内核实现的机制&#xff0c;它是由内核态和用户态合作完成的。pthread_create 不是一个系统调用&#xff0c;是 Glibc 库的一个函数&#xff0c;所以我们还要去 Glibc 里面去找线索。 首先处理的是线程的属性参数。例如前面写程序的时候&#xff0c;我们设置…

一些关于weex编译apk的环境配置记录,成功打包weex app

背景 使用weex编译安卓app。老是会遇到一些配置问题&#xff0c;导致编译apk异常。 最后重新下载Android studio&#xff0c;配置好环境&#xff0c;再使用官网的命令&#xff0c;就编译成功了&#xff0c;下面是记录。 编译成功的环境 Java版本&#xff1a;jdk1.8.0_241 And…

深度学习_2 数据操作

数据操作 机器学习包括的核心组件有&#xff1a; 可以用来学习的数据&#xff08;data&#xff09;&#xff1b;如何转换数据的模型&#xff08;model&#xff09;&#xff1b;一个目标函数&#xff08;objective function&#xff09;&#xff0c;用来量化模型的有效性&…

AB试验(七)利用Python模拟A/B试验

AB试验&#xff08;七&#xff09;利用Python模拟A/B试验 到现在&#xff0c;我相信大家理论已经掌握了&#xff0c;轮子也造好了。但有的人是不是总感觉还差点什么&#xff1f;没错&#xff0c;还缺了实战经验。对于AB实验平台完善的公司 &#xff0c;这个经验不难获得&#…

记录一段帮朋友写的代码,使用牛顿-拉夫逊方法解方程

要求 已知公式&#xff1a; t G A B F r B r 2 2 F A 2 B G A F ln ⁡ ( r − A ) C o n s t t\frac{GAB}{F}r\frac{Br^2}{2F}\frac{A^2BGA}{F}\ln (r-A)Const tFGAB​r2FBr2​FA2BGA​ln(r−A)Const 其中 t 的值为0-1000&#xff0c;每间隔25取一次值A2.12941E-10B0.…

源码!游戏源码!大量游戏源码!!!知识星球

分享 不在游戏公司有段时间了&#xff0c;但是还一直在游戏圈&#xff0c;多年的游戏经验也做了一些总结&#xff0c;还有一些私货源码没有做分享&#xff0c;所以也跟着玩一玩知识星球。 源码来自哪 1、来自网上搜集 各种开源网站&#xff0c;比如github ,gitee平常会注意搜…

Windows内存取证-中等难度 -上篇

涉及的工具&#xff1a; SysInfoTools-ost-viewer-pro volatility_2.6_lin64_standalone VT在线工具 使用到的镜像文件&#xff1a; target1-1dd8701f.vmss target2-6186fe9f.vmss POS-01-c4e8f786.vmss 题干&#xff1a; 一名员工报告说&#xff0c;他的机器在收到一封可…

【深度学习docker】roop-unleashed的docker镜像,deepfake AI换脸

快速启动roop-unleashed 要求有支持CUDA11.8的显卡Linux Docker。 使用docker启动roop-unleashed&#xff1a; docker run -d --gpus all -p 7860:7860 kevinchina/deeplearning:roop-unleashed1访问&#xff1a; 制作工程使用的一些脚本 基础镜像&#xff1a; FROM nvidi…

基于SpringBoot的在线笔记系统

技术介绍 &#x1f525;采用技术&#xff1a;SpringSpringMVCMyBatisJSPMaven &#x1f525;开发语言&#xff1a;Java &#x1f525;JDK版本&#xff1a;JDK1.8 &#x1f525;服务器&#xff1a;tomcat &#x1f525;数据库&#xff1a;mysql &#x1f525;数据库开发工具&…

时间序列预测大模型-TimeGPT

时间序列预测领域正在经历一个非常激动人心的时期。仅在过去的三年里&#xff0c;我们就看到了许多重要的贡献&#xff0c;例如N-BEATS、N-HiTS、PatchTST和TimesNet。 与此同时&#xff0c;大型语言模型 (LLM)最近在 ChatGPT 等应用程序中广受欢迎&#xff0c;因为它们无需进…

LoadRunner实现接口测试

接口测试的原理是通过测试程序模拟浏览器向服务器发送请求报文&#xff0c;服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给浏览器&#xff0c;浏览器接收应答报文这一个过程。 LoadRunner是一种性能测试工具&#xff0c;但是它也可以用来做接口测试。开发人…

kubernetes实验挑战二(troubleshoot pv pvc )

This 2-Node Kubernetes cluster is broken! Troubleshoot, fix the cluster issues and then deploy the objects according to the given architecture diagram to unlock our Image Gallery!! 1、 kubeconfig /root/.kube/config, User ‘kubernetes-admin’ Cluster: S…

基于乌鸦算法的无人机航迹规划-附代码

基于乌鸦算法的无人机航迹规划 文章目录 基于乌鸦算法的无人机航迹规划1.乌鸦搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用乌鸦算法来优化无人机航迹规划。 1.乌鸦搜索算法 …

昂首资本严肃且专业地探讨波浪理论第一波

很多投资者已经了解了波浪理论第一波&#xff0c;今天昂首资本和各位投资者再加深一下理解&#xff0c;让我们严肃且专业地探讨一下第一波。 以小时价格图表举例&#xff0c;第一波的起始点存在一个看涨反转棒。请注意&#xff0c;这个棒形结构对应了比尔威廉姆斯交易策略三智…