实现腾讯云发送短信功能--工具类和SpringBoot配置两种方法实现

  • 一、开通腾讯云短信服务
  • 二、工具类--使用qcloudsms实现短信发送
  • 三、Spring Boot项目引入短信发送功能

我们发现,大多数系统的登陆验证以及数据安全都以手机号为主,因此,许多的系统都采用绑定手机号或者手机号验证的类似功能,因此,本篇介绍并提供短信发送功能的实现内容。

一、开通腾讯云短信服务

1.通过个人微信公众号申请开通短信服务,首次开通可以免费获赠100条国内短信。

微信公众平台:https://mp.weixin.qq.com,先要注册个人订阅号。

2.然后登录腾讯云,在界面的右上角点击控制台进入,鼠标移到左上角的云产品,搜索短信进入短信模块,申请开通,点击开始接入。

3.快速开始,开始。

4.开始创建短信签名。

5.这里签名用途选择自用,签名类型选公众号,签名内容写你的公众号名称,证明类型选公众号设置页面截图,可以查看范例,截图上传,申请说明写公众号全称。

6.等待十几分钟后,签名通过,就可以创建正文模板了。记下签名的内容,后面发送短信要用到(配置yml的时候用)。

7.创建正文模板,这里的短信内容里的{1}和{2}是占位符,需要通过参数传过去。

8.等待十几分钟后,正文模板审核通过。记下正文模板的ID,后面发送短信要用到(配置yml的时候用)。

9.最后再到应用管理中的应用列表,拿到你的SDK AppID和App Key(配置yml的时候用),就可以测试发送短信了。


短信服务的腾讯云服务就开通好了。

二、工具类–使用qcloudsms实现短信发送

首先提供工具类的方式去实现短信发送功能。
需要的依赖包是com.github.qcloudsms下的qcloudsms。
具体如下(里面的应用ID、key、模板id都是自已在开通云服务时设置好的,填自己的就行):


import com.alibaba.fastjson.JSONException;
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;import java.io.IOException;/**自定义发送短信的工具类 (项目不用该类,使用sprinboot自动配置类)* @Description:* @Author wxh* @Version 1.0* @Date Created in 2021-01-03 13:05*/
public class SMSUtil {// 短信应用 SDK AppIDprivate static int appid = 14002568; // SDK AppID 以1400开头// 短信应用 SDK AppKeyprivate static  String appkey = "应用App Key";// 需要发送短信的手机号码
//    String[] phoneNumbers = {"13025468745","145827485"};// 短信模板 ID,需要在短信应用中申请private static  int templateId1 = 1264448; // NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请private static  int templateId2 = 1265837; // NOTE: 这里的模板 ID`7839`只是示例,真实的模板 ID 需要在短信控制台中申请// 签名private static  String smsSign = "Itfuture栈"; // NOTE: 签名参数使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台申请public static boolean QCloudSmsSend(String phoneNumber,String code){try {String[] params = new String[1];params[0] =code;SmsSingleSender ssender = new SmsSingleSender(appid, appkey);//sendWithParm:     传入国家码 电话号码 模板id 模板参数 签名 扩展码为空 返回参数为空SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumber,templateId1, params, smsSign, "", "");if(result.result==0){return true;}else{System.out.println("短信发送失败,原因:"+result.errMsg);}} catch (HTTPException e) {// HTTP 响应码错误e.printStackTrace();} catch (JSONException e) {// JSON 解析错误e.printStackTrace();} catch (IOException e) {// 网络 IO 错误e.printStackTrace();}return false;}public static boolean loginSmsSend(String phoneNumber,String code){try {String[] params = new String[1];params[0] =code;SmsSingleSender ssender = new SmsSingleSender(appid, appkey);//sendWithParm:     传入国家码 电话号码 模板id 模板参数 签名 扩展码为空 返回参数为空SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumber,templateId2, params, smsSign, "", "");if(result.result==0){return true;}else{System.out.println("短信发送失败,原因:"+result.errMsg);}} catch (HTTPException e) {// HTTP 响应码错误e.printStackTrace();} catch (JSONException e) {// JSON 解析错误e.printStackTrace();} catch (IOException e) {// 网络 IO 错误e.printStackTrace();}return false;}
}

三、Spring Boot项目引入短信发送功能

接下来主要是如何在spring boot项目使用该功能

1.在项目代码的commons层导入依赖;

<dependency><groupId>com.github.qcloudsms</groupId><artifactId>qcloudsms</artifactId><version>1.0.6</version>
</dependency>

2.application.yml参数设置,放在项目名称下。

# 短信发送参数
txsms:AppId: 1400616 # 你的系统默认应用SDK AppIDAppKey: "应用App Key" # 你的系统默认应用App KeyTemplateId1: 12648 # 你的正文模板ID1TemplateId2: 12637 # 你的正文模板ID2signName: "Itfuture栈" # 你的签名内容

3.SpringBoot自动装配(springboot最大特点)

/*** 自动配置类* 配置工具类 template*/
@Configuration
@EnableConfigurationProperties({TxProperties.class})
public class CommonsAutoConfiguration {/** 创建发送短信的工具类* 将TxProperties对象注入到容器中* 要配置CommonsAutoConfiguration到resources/META-INF/spring.factories中* */@Beanpublic TxSmsTemplate txSmsTemplate(TxProperties txProperties) {return new TxSmsTemplate(txProperties);}
}

4.创建参数配置类TxProperties.java

/**腾讯云发送短信* 参数配置类* @author: wxh* @version:v1.0* @date: 2022/11/11 21:12*/
@Data
// 读取application.yml中的项目名称.txsms的属性
@ConfigurationProperties("e.txsms")
public class TxProperties {// AppId  1400开头的private int AppId;// 短信应用SDK AppKeyprivate String AppKey;// 短信模板ID1private int TemplateId1;// 短信模板ID2private int TemplateId2;// 签名private String signName;
}

5.创建TxSmsTemplate.java

模板里面主要定义自己所需要的业务功能(即不同模板可以实现不同功能),比如:我定义了两个模板,一个实现发送取件码功能,一个实现登陆注册验证功能。

package com.itfuture.e.sms;import com.alibaba.fastjson.JSONException;
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;import java.io.IOException;/**腾讯云发送短信模板对象,封装了发送短信的api* @author: wxh* @version:v1.0* @date: 2022/11/11 21:15*/
@Slf4j
@Component
public class TxSmsTemplate {private TxProperties txProperties;public TxSmsTemplate(TxProperties txProperties) {this.txProperties = txProperties;}/*** 发送取件码* @param phoneNumber 手机号* @param code 取件码* @return*/public boolean sendMsgCode(String phoneNumber,String code) {try {// 接收生成的验证码,设置5分钟内填写String[] params = {code, "5"};// 构建短信发送器SmsSingleSender ssender = new SmsSingleSender(txProperties.getAppId(), txProperties.getAppKey());//sendWithParm:     传入国家码 电话号码 模板id 模板参数 签名 扩展码为空 返回参数为空SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumber,txProperties.getTemplateId1(), params, txProperties.getSignName(), "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信if(result.result==0){return true;}else{System.out.println("短信发送失败,原因:"+result.errMsg);}} catch (HTTPException e) {// HTTP响应码错误log.info("短信发送失败,HTTP响应码错误!");// e.printStackTrace();} catch (JSONException e) {// json解析错误log.info("短信发送失败,json解析错误!");//e.printStackTrace();} catch (IOException e) {// 网络IO错误log.info("短信发送失败,网络IO错误!");// e.printStackTrace();}return false;}/*** 登陆、注册验证* @param phoneNumber 手机号* @param code 验证码* @return*/public boolean loginSmsSend(String phoneNumber,String code){try {// 接收生成的验证码,设置5分钟内填写String[] params = {code, "5"};// 构建短信发送器SmsSingleSender ssender = new SmsSingleSender(txProperties.getAppId(), txProperties.getAppKey());//sendWithParm:     传入国家码 电话号码 模板id 模板参数 签名 扩展码为空 返回参数为空SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumber,txProperties.getTemplateId2(), params, txProperties.getSignName(), "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信if(result.result==0){return true;}else{System.out.println("短信发送失败,原因:"+result.errMsg);}} catch (HTTPException e) {// HTTP响应码错误log.info("短信发送失败,HTTP响应码错误!");// e.printStackTrace();} catch (JSONException e) {// json解析错误log.info("短信发送失败,json解析错误!");//e.printStackTrace();} catch (IOException e) {// 网络IO错误log.info("短信发送失败,网络IO错误!");// e.printStackTrace();}return false;}
}

6.测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestSms {@Autowiredprivate TxSmsTemplate txSmsTemplate;/*** 腾讯云发送短信测试*/@Testpublic void TxSmsTest(){// 参数1: 手机号(正文模板中的参数{1})// 参数2: 验证码(正文模板中的参数{2})boolean Msg = txSmsTemplate.sendMsgCode("用户手机号码", "验证码");System.out.println(Msg);}
}

声明:本文中所有的AppId以及AppKey都是假的,只是为了更加真实,便于理解。

【短信发送】实现腾讯云发送短信功能--工具类和SpringBoot配置两种方法实现相关推荐

  1. python调用qq发送短信_使用腾讯云发送短信

    使用腾讯云发送短信 第一次注册使用白送你200条,美滋滋 在腾讯云平台申请 点点点操作就完事了,要想发送短信,必须要申请签名和模板.签名类型可以使用网站,公众号,小程序,app 填好信息,上传指定的截 ...

  2. 短信宝、腾讯云 发送短信验证码

    安装composer扩展包 composer require mrwanghongda/sms-sdk 使用 use App\Factory\SmsFactory;/*** 短信宝*/const SM ...

  3. SpringBoot+腾讯云实现短信发送

    SpringBoot+腾讯云实现短信发送 在腾讯云创建短信签名 短信签名审核通过后创建短信模板 短信发送SDK(java)文档,将com.tencentcloudapi包导入 <dependen ...

  4. 使用腾讯云发送短信API接口实现(完整流程)

    步骤 一.开通腾讯云短信服务 二.申请签名前的准备(申请公众号) 三.创建签名和模板 四.腾讯云API实现发送短信 五.使用springboot进行调用 六.可能会报的错误 一.开通腾讯云短信服务 在 ...

  5. qpython3h手机版怎么发短信_python如何使用腾讯云发送短信

    腾讯云方面的申请和流程都比较简单,基本都是可视化操作的,这里就不在赘述了.这篇文章着重讲解怎么用python实现调用. 我假设你已经满足了以下几个前提 + 已经开通了腾讯云短信业务 + 创建好了短信签 ...

  6. python项目对接腾讯云发送短信

    python项目对接腾讯云发送短信 先安装需要的包 pip install tencentcloud-sdk-python # -*- coding: utf-8 -*- # pip install ...

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

    腾讯云发送短信验证码服务 1.注册腾讯云的账号 在腾讯云的官网:https://cloud.tencent.com/注册一个腾讯云的账号,就是日常的注册流程(这里就不贴图了),不过要实名认证啥的,认证 ...

  8. QT POST方法:以使用腾讯云发送短信为例

    QT POST方法:以使用腾讯云发送短信为例 1.准备 2.随机数 3.时间戳 4.哈希算法 5.签名方法 6.POST结合使用 POST方法是制作软件中常用的一个方法,而验证码短信在各种注册操作中需 ...

  9. thinkphp5使用腾讯云发送短信验证码服务

    1.打开腾讯云官网开通短信服务:https://console.cloud.tencent.com/sms/smslist,需要实名验证 2.下载相对应的sdk文件,我这里是php文件 3.解压后将以 ...

最新文章

  1. 难点电路详解之负反馈放大器电路(2)
  2. python urllib.request 爬虫 数据处理-使用Python3.5写简单网络爬虫
  3. 深入浅出谈接口(interface)和类间继承(extends)
  4. svchost.exe介绍
  5. 内核中的kmalloc函数详解
  6. 数据科学篇| Seaborn库的使用(四)
  7. 交流电路中的功率和功率因数
  8. 【CASS精品教程】CASS9.1等高线的绘制完整案例教程
  9. DMA双缓冲传输意义
  10. 生物医学基础--右腿驱动
  11. XBOX Series X规格如此强悍,如果被破解安装了win10,将对PC行业带来什么影响?
  12. Json.Net学习笔记(十) 保持对象引用
  13. Python学习笔记25:接口类、抽象类和封装
  14. Linux服务器操作系统 . 文件目录及文件管理
  15. html怎么获取手机mac地址,js获取mac地址_Js获取客户端IP地址与MAC地址
  16. 用Python批量把EXCEL表格中的数据提交到网页上
  17. AAAI最佳论文Informer 解读
  18. 点击按钮复制微信号/公众号,并打开微信APP搜索H5如何制作。
  19. 2020校招前端面经
  20. Carbon Streaming提供股票和权证合并的最新信息,以寻求潜在的美国上市

热门文章

  1. 商标45类分类表明细表_45类商标分类明细_45类商标经营范围包括哪些商品-商标查询-知夫子...
  2. STM32CubeIDE使用总结(三)——debug调试程序
  3. kernel too old
  4. Ubuntu安装时,U盘启动盘制作的坑
  5. 关于海康威视预览图像报错误404的解决方案
  6. web全栈工程师简历
  7. This generated password is for development use only. Your security configuration must be updated bef
  8. java中osend_Java中OIO与NIO的简单区别
  9. Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!
  10. 关于(广义)代数特征值问题的一点注记