本来是打算使用阿里云的,但是发现阿里云短信申请签名的时候现在不允许个人申请了,因此改用腾讯云短信服务

首先登录腾讯云官方网站:搜索短信,点击免费试用

个人用户申请开通之后可以看到可以免费使用100条短信(学习来说够用了)

 然后进行短信签名的申请:

我选择类型是公众号(因为我真的有公众号),大家以个人需求为准

第二步创建正文模板 :

第三步等待审核:

过了两个小时,一看签名和短信模板都审核通过了,那就开始搞springboot整合

直接按照腾讯官方文档进行整合,在腾讯云里面搜索短信,点击api,如下图:

看java SDK相关的部分即可:

首先是需要准备SecretID 和SecretKey ,调用短信接口需要用到:

官方提供的短信接口文档地址:短信 Java SDK - SDK 文档 - 文档中心 - 腾讯云

短信 数据结构 - API 中心 - 腾讯云

根据官网文档所示添加短信依赖:

<dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>3.1.270</version><!-- 注:这里只是示例版本号(可直接使用),可获取并替换为 最新的版本号,注意不要使用4.0.x版本(非最新版本) -->
</dependency>

controller代码如下:

package com.example.txsmsboot.controller;import com.example.txsmsboot.service.TxSmsService;
import com.example.txsmsboot.util.RandomUtil;
import com.example.txsmsboot.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.TimeUnit;@RestController
@RequestMapping("/api/sms")
public class TxSmsController {@Autowiredprivate TxSmsService txSmsService;@Autowiredprivate RedisTemplate<String, String> redisTemplate;@RequestMapping("send/{phone}")public Result senTxdCode(@PathVariable String phone) {/*** 判断手机号是否为空*/if (StringUtils.isEmpty(phone)) {Assert.isNull(phone, "手机号不允许为空哦");}/*** 发送短信验证码* 首先从redis里面获取,redis里面能够获取到就直接发送给用户* 如果redis里面获取不到证明上一条验证码已过期,重新生成验证发给用户* 目前叮咚买菜app/支付宝就是按照这样的逻辑做的*/String code = redisTemplate.opsForValue().get(phone);if (StringUtils.isEmpty(code)) {code = RandomUtil.getSixBitRandom();}/*** 拿到phone、和code进行验证码发送*/boolean isSend = txSmsService.sendSms(phone, code);if (isSend) {/*** 放到redis里面*/redisTemplate.opsForValue().set(phone, code, 2, TimeUnit.MINUTES);return Result.ok();} else {return Result.fail().message("发送短信失败");}}
}

service代码:

serviceImpl代码:

package com.example.txsmsboot.service.impl;import com.example.txsmsboot.service.TxSmsService;
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.Value;
import org.springframework.stereotype.Service;@Service
public class TxSmsServiceImpl implements TxSmsService {/*** 获取配置文件中腾讯云相关信息(从配置文件获取)*/@Value("${tx.sms.secretID}")private String secretID;@Value("${tx.sms.secretKey}")private String secretKey;@Overridepublic boolean sendSms(String phone, String code) {try {// 整合腾讯云短信服务发送Credential cred = new Credential(secretID, secretKey);// 实例化一个http选项,可选,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();httpProfile.setReqMethod("POST");/* SDK有默认的超时时间,非必要请不要进行调整* 如有需要请在代码中查阅以获取最新的默认值 */httpProfile.setConnTimeout(60);/* 指定接入地域域名,默认就近地域接入域名为 sms.tencentcloudapi.com ,也支持指定地域域名访问,例如广州地域的域名为 sms.ap-guangzhou.tencentcloudapi.com */httpProfile.setEndpoint("sms.tencentcloudapi.com");/* 非必要步骤:* 实例化一个客户端配置对象,可以指定超时时间等配置 */ClientProfile clientProfile = new ClientProfile();/* SDK默认用TC3-HMAC-SHA256进行签名* 非必要请不要修改这个字段 */clientProfile.setSignMethod("HmacSHA256");clientProfile.setHttpProfile(httpProfile);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 = "自己sdkAppid";req.setSmsSdkAppId(sdkAppId);/* 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看 */String 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 = "自己模板id";req.setTemplateId(templateId);/* 下发手机号码,采用 E.164 标准,+[国家或地区码][手机号]* 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号 *///String[] phoneNumberSet = {"+8618777777777", "+8615888888888","+8618555555555","+8618333333333","+8613566666666"};String[] phoneNumberSet = {phone};req.setPhoneNumberSet(phoneNumberSet);/* 模板参数: 若无模板参数,则设置为空 */String[] templateParamSet = {code};req.setTemplateParamSet(templateParamSet);/* 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的* 返回的 res 是一个 SendSmsResponse 类的实例,与请求对象对应 */SendSmsResponse res = client.SendSms(req);// 输出json格式的字符串回包System.out.println(SendSmsResponse.toJsonString(res));// 也可以取出单个值,你可以通过官网接口文档或跳转到response对象的定义处查看返回字段的定义System.out.println(res.getSendStatusSet()[0].getCode());if ("Ok".equals(res.getSendStatusSet()[0].getCode())) {return true;}} catch (TencentCloudSDKException e) {e.printStackTrace();return false;}return false;}
}

主要用到了下面几个参数:

1、SecretID 和SecretKey的获取上面已经有介绍

2、sdkAppId:在应用列表里面找

3、短信签名内容:在签名管理里面

4、模板id-templateId:就是自己申请的模板id

然后我启动服务访问下发短信接口:

然后我去redis里面看下是否已经放入缓存:

可以看到是正常的,我的缓存时间设置的是2s,2s后缓存内容就会失效

演示所用到的代码已经上传到csdn了,有需要的可以关注下公众号联系博主获取哦

springboot整合腾讯云短信服务相关推荐

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

    使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题 参考文章: (1)使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题 (2)https://www.cnblog ...

  2. 腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现)

    文章目录 腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现) 1.打开腾讯云短信服务 2.创建短信签名 3.创建短信正文模板 4.等待全部审核完毕即可 5.发送短信 ...

  3. SpringBoot工程接入腾讯云短信服务平台

    由于业务需要,需要使用第三方短信平台,进行验证码的发送.网上的短信服务平台主要由:百度.腾讯.阿里云:采用官方提供的SDK,调用接口即可. 腾讯云短信服务平台和阿里云短信服务平台,一般步骤为:注册-- ...

  4. 基于SpringBoot+腾讯云短信服务实现接收手机验证码功能

    在腾讯云中配置需要的服务 申请签名和短信模板 创建应用 在项目application.yml中配置相关参数 在项目中安装腾讯云短信服务的依赖包 <!--腾讯云--><dependen ...

  5. Springboot+Redis接入腾讯云短信服务实现验证码发送

    目录 一.开通腾讯云短信服务 二.代码实现 三.测试 申请阿里云短信服务需要以上线APP或已备案网站,腾讯云短信服务可以使用微信公众号申请,注册个人微信公众号比较方便,改用腾讯云短信服务,参考官方SD ...

  6. 接入腾讯云短信服务(史上最详细+该短信服务如何申请成功+发送短信验证码API讲解+相关错误分析)

    2021/8/17/23:01{2021/8/17/23:01}2021/8/17/23:01 文章目录 前言 一.如何成功申请到腾讯云短信服务 1.签名申请 2.正文模板申请 二.发送短信API开发 ...

  7. 腾讯云短信服务发送验证码

    腾讯云短信服务发送验证码 1.前言 2.进入短信服务控制台 3.创建签名 4.创建模板 5.短信-应用管理-应用列表 6.创建密钥 7.SpringBoot实现短信验证码发送 7.1 引入依赖 7.2 ...

  8. Java后端利用腾讯云短信服务发短信

    利用手机验证码进行注册或进行下一步操作已经是非常普遍的,这篇文章就教你如何是用腾讯云短信服务发送手机验证码. 文章目录 一.前提条件 二.代码实现 1.引入依赖 2.Java代码实现 3.代码改进 4 ...

  9. SpringBoot集成腾讯云短信实现注册/登录功能

    前言 笔记参考 Duktig丶 JavaSDK地址:短信 Java SDK - SDK 文档 - 文档中心 - 腾讯云 1.导入依赖 <dependency><groupId> ...

  10. Python使用腾讯云-短信服务发送手机短信

    原创不易,欢迎关注我的微信公众号:司马弈 获取更多精选内容. 腾讯云短信服务介绍 目前[腾讯云短信]为客户提供[国内短信].[国内语音]和[海外短信]三大服务,腾讯云短信SDK支持以下操作: 国内短信 ...

最新文章

  1. 适配器在JavaScript中的体现
  2. cocos2d-x plist使用
  3. 虚拟机的分类_「面试必备」Java虚拟机知识点复习手册(下)
  4. java的import关键字的使用
  5. 史上最全搞怪WC标志(组图)--设计者太有才了。
  6. Linux加密框架 crypto 哈希算法举例 MD5
  7. springboot学习笔记-01-springboot-helloworld的编写以及原理初步了解(自动装配)
  8. daisy_DAISY:视障人士的Linux兼容文本格式
  9. 基于JAVA+SpringMVC+MYSQL的博客系统
  10. wireshark常用选项与功能总结【10分钟成为抓包大师】
  11. java替代重定向_一个简单的java重定向程序,为什么要恢复System . out 对象,却不要恢复System...
  12. 打算为IBatisNet 引入自定义Membership和Role
  13. win11 恢复win10开始菜单及任务栏
  14. 面对面教你如何用Python提取快递信息
  15. mac无法验证此app不包含恶意软件
  16. 四级恋练有词课程 (10课时-朱伟)1.Unit1A单词识记(上)
  17. MyEclipse优化、常用设置、快捷键
  18. vultr完美搭建 Nextcloud 私有云网盘教程
  19. 1443:Addition Chains
  20. 小白入门计算机视觉系列——ReID(一):什么是ReID?如何做ReID?ReID数据集?ReID评测指标?

热门文章

  1. 3d人体智能测试软件,三维人体解剖软件(3dbody)
  2. 1386 安排电影院座位(字典、位运算)
  3. 哪里可以下载免费字体,免费可商用字体解决你的烦恼
  4. xpose使用教程 hook java层的代码 (一 公司取名.apk)
  5. c语言判断一个数是否为素数思路,C语言判断一个数是否为素数方法解析
  6. AlphaZero问世:8小时完爆围棋、国际象棋、日本将棋(转)
  7. 使用 vlmcsd 部署 KMS 服务器
  8. bootbox.confirm 官方例子 网址
  9. html5 plus 图片下载保存到手机相册
  10. ec6108v9a精简刷机包_新版华为悦盒EC6108V9E、V9I第三方精简流畅无安装限制固件