前言

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

实战

1、申请密钥及签名模板

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

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


2)、签名及模板

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


3)、应用SDK APPID


4)、短信工具类

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

2、代码集成

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


1)、引入依赖

一般在common模块中引入即可

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

2)、新增properties配置

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


3)、新增配置类

  1. package com.imooc.utils;
  2. import lombok.Data;
  3. import org.springframework.boot.context.properties.ConfigurationProperties;
  4. import org.springframework.context.annotation.PropertySource;
  5. import org.springframework.stereotype.Component;
  6. @Component
  7. @Data
  8. @PropertySource("classpath:tencentCloud.properties")
  9. @ConfigurationProperties(prefix = "tencent.cloud")
  10. public class TencentCloudProperties {
  11. private String secretId;
  12. private String secretKey;
  13. }

4)、短信工具类

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

  1. package com.imooc.utils;
  2. import com.tencentcloudapi.common.Credential;
  3. import com.tencentcloudapi.common.exception.TencentCloudSDKException;
  4. import com.tencentcloudapi.common.profile.ClientProfile;
  5. import com.tencentcloudapi.common.profile.HttpProfile;
  6. import com.tencentcloudapi.sms.v20210111.SmsClient;
  7. import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
  8. import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Component;
  11. @Component
  12. public class SMSUtils {
  13. @Autowired
  14. private TencentCloudProperties tencentCloudProperties;
  15. public void sendSMS(String phone, String code) throws Exception {
  16. try {
  17. /* 必要步骤:
  18. * 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
  19. * 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
  20. * 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
  21. * 以免泄露密钥对危及你的财产安全。
  22. * CAM密匙查询获取: https://console.cloud.tencent.com/cam/capi
  23. */
  24. Credential cred = new Credential(tencentCloudProperties.getSecretId(),
  25. tencentCloudProperties.getSecretKey());
  26. // 实例化一个http选项,可选的,没有特殊需求可以跳过
  27. HttpProfile httpProfile = new HttpProfile();
  28. // httpProfile.setReqMethod("POST"); // 默认使用POST
  29. /*
  30. * SDK会自动指定域名。通常是不需要特地指定域名的,但是如果你访问的是金融区的服务
  31. * 则必须手动指定域名,例如sms的上海金融区域名: sms.ap-shanghai-fsi.tencentcloudapi.com
  32. */
  33. httpProfile.setEndpoint("sms.tencentcloudapi.com");
  34. // 实例化一个client选项
  35. ClientProfile clientProfile = new ClientProfile();
  36. clientProfile.setHttpProfile(httpProfile);
  37. // 实例化要请求产品的client对象,clientProfile是可选的
  38. SmsClient client = new SmsClient(cred, "ap-nanjing", clientProfile);
  39. // 实例化一个请求对象,每个接口都会对应一个request对象
  40. SendSmsRequest req = new SendSmsRequest();
  41. String[] phoneNumberSet1 = {
  42. "+86" + phone
  43. }; //电话号码
  44. req.setPhoneNumberSet(phoneNumberSet1);
  45. req.setSmsSdkAppId("xxx"); // 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId
  46. req.setSignName("Java分享XX"); // 签名
  47. req.setTemplateId("xxx"); // 模板id:必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
  48. /* 模板参数(自定义占位变量): 若无模板参数,则设置为空 */
  49. String[] templateParamSet1 = {
  50. code
  51. };
  52. req.setTemplateParamSet(templateParamSet1);
  53. // 返回的resp是一个SendSmsResponse的实例,与请求对象对应
  54. SendSmsResponse resp = client.SendSms(req);
  55. // 输出json格式的字符串回包
  56. // System.out.println(SendSmsResponse.toJsonString(resp));
  57. }
  58. catch (TencentCloudSDKException e) {
  59. System.out.println(e.toString());
  60. }
  61. }
  62. }

5)、测试效果

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

  1. @Autowired
  2. private SMSUtils smsUtils;
  3. @GetMapping("sms")
  4. public Object sendSMS() throws Exception {
  5. smsUtils.sendSMS("159xxxxxxxx", "6752");
  6. return "sendSMS OK!";
  7. }

总结

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

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

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


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

极速指南:在 SpringBoot 中快速集成腾讯云短信功能的更多相关文章

  1. 使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题

    springboot集成腾讯云短信服务: (1)导入依赖 <dependency> <groupId>org.springframework.boot</groupId& ...

  2. 轻松集成腾讯云短信服务实现短信发送(Java实现)

    不论是阿里云还是腾讯云,要想在网站上实现短信发送功能,首先得保证你的网站域名是通过备案的,因为短信签名是需要用到备案过的域名截图,所以域名通过了,申请很快就会审批成功了. (说点题外话,备案的话,需要 ...

  3. thinkphp3.2.3集成腾讯云短信文档流程

    昨天晚上折腾了一个小时没解决 今天折腾了20分钟就搞定了 看了thinkphp3.2.3的命名空间解释方法  把文件放到这里 /ThinkPHP/Library/Org/ 把新建了一个Sms文件夹 把 ...

  4. 实现springboot对接腾讯云短信

    1,导入pom依赖 <dependency> <groupId>com.github.qcloudsms</groupId> <artifactId>q ...

  5. Springboot集成阿里云短信

    目录 1 前言 2 准备工作 2.1 了解流程 2.2 配置信息 2.3 短信签名和模板 2.3.1 签名 2.3.2 模板 2.3.3 存入数据库 3 SDK 4 集成Springboot 4.1 ...

  6. ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成

    在一般的系统中,往往也有短信模块的需求,如动态密码的登录,系统密码的找回,以及为了获取用户手机号码的短信确认等等,在ABP框架中,本身提供了对邮件.短信的基础支持,那么只需要根据自己的情况实现对应的接 ...

  7. 如何用Baas快速在腾讯云上开发小程序-系列4:实现客户侧商品列表、商品详情页程序

    版权声明:本文由贺嘉 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/431172001487671163 来源:腾云阁 h ...

  8. .NET 中使用阿里云短信的 API 接口

    小弟初来乍到,这也是我的第一篇文章,写的不好的地方还望指正.谢谢各位! 引言 短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信 ...

  9. springboot 使用阿里云短信服务发送验证码

    一.申请阿里云短信服务 1.申请签名 2.申请模板 3.创建accesskey(鼠标悬停在右上角头像) 二.代码实现 1.springboot引入maven依赖 <dependency> ...

  10. Springboot下实现阿里云短信验证功能(含代码)

    Springboot下实现阿里云短信验证功能 一 开通阿里云短信服务 阿里云官网注册登录 找到短信服务并开通 打开短信服务的管理台 在国内消息那栏中添加签名管理和模板管理(按照格式要求去写) 在右上角 ...

随机推荐

  1. .NET 如何实现ChatGPT的Stream传输

    .NET 如何实现ChatGPT的Stream传输 ChatGPT是如何实现不适用websocket进行一个一个字返回到前端的? 下面我们会介绍一下EventSource EventSource Ev ...

  2. Avalonia项目在OpenKylin运行踩坑

    Avalonia项目在OpenKylin运行踩坑 本篇博客记录OpenKylin开源操作系统中运行Avalonia项目遇到的各种问题,会一直更新,最新的内容请点击文末的链接跳转到我的博客原文地址查看. ...

  3. 使用gulp.js打包layuiAdmin

    安装nvm 在nvm目录下,找到settings.txt,追加以下两行加速nvm(淘宝镜像)node_mirror: https://npm.taobao.org/mirrors/node/npm_m ...

  4. 信创啊,信创。Solon 的 war 包,现在同时支持 jakarta.servlet(及 javax.servlet)容器了!

    Solon 是个神奇的项目,不是基于 Servlet 的.但是又很支持 Servlet,尤其是 war 包.打起来还挺方便的. 如果你是做信创的(听说,很多信创项目是用 war 部署到 tomcat ...

  5. 从零玩转系列之微信支付实战PC端支付微信回调接口搭建

    一.前言 halo各位大佬很久没更新了最近在搞微信支付,因商户号审核了我半个月和小程序认证也找了资料并且将商户号和小程序进行关联,至此微信支付Native支付完成.此篇文章过长我将分几个阶段的文章发布 ...

  6. Git练习网址

    爲了方便学习git指令,让新手们更容易地理解,所以推荐一些git练习和博文网址 推荐的网址如下 网址一:Learn Git Branching! https://learngitbranching.j ...

  7. [POI2007]GRZ-Ridges and Valleys 题解

    (2022-12-28 ) AcWing 1106 洛谷 P3456 题目大意 找出一个图中所有大于(或小于)周围相邻的非连通块点的所有连通块个数. 就是说,对于一个连通块: 如果它周围的点都低于它, ...

  8. 基于CUBEMX的STM32F4 Hal库,配置LVGL(无操作系统版)

    本篇文章移植思路适用于所有嵌入式MCU,包括Arm,STM32,NXP,乐鑫,Nuvoton,Arduino,RT-Thread,Zephyr,NuttX,Adafruit等等. 为什么要写这一篇移植 ...

  9. 记录一次解决数据库连接池连接泄露BUG

    1 BUG现象 系统并发请求,系统停滞无法使用,所有接口都是无法与后端进行交互的状态,系统并没有宕机 2 BUG的业务流程 插入分数方法 涉及插入表ABCD 加了声明式事务 查询分数方法 涉及表ABC ...

  10. 2023牛客暑期多校训练营7 CGILM

    比赛链接 C 题解 知识点:位运算,贪心. 我们用分段的思想考虑大小关系,若在同一段则大小不能确定,一开始为 \([1,n]\) . 我们按位从高到低考虑,某位如果 \(b_i\) 产生了 \(1\) ...