花了 44 大洋,我实现 Java 发送短信功能!

2023-11-06

本篇为从 0 到 1 的一个,用 Java 对接腾讯短信发送功能的一篇流程文章。而标题中的 44 大洋则是用来购买短信套餐,当然如果你是首次使用腾讯云平台则可以享受【免费使用】这一功能(我是老用户)。

那,废话不多说,我们往下看对接步骤。

1、短信套餐

我们先来购买以下短信套餐,这里选择腾讯云,地址:

cloud.tencent.com/act/cps/red…

当然,套餐我们有两种选择方式:

  1. 免费试用
  2. 购买

1)先来看看,免费试用

  • 点击云通信中的短信服务

2)再来看,购买套餐

3)如果购买了或者有试用套餐,这里会显示你的套餐信息

我这里是用了 44 块钱购买了一个套餐,但是它附赠了 100 条短信,所以我一共有 1100 条短信发送的资格。

2、短信配置

短信配置主要分三部分:

  1. 签名
  2. 模板
  3. 应用

进入短信控制台,先完成如下部分的内容填写:

注意:这里选择的类型是个人网站,所以必须要有已备案的域名信息

填写信息这里就不截图了,如果你有已经备案的域名,那么就按照人家给的步骤一次填写就行。至于短信模板就是你要发给用户的一段中文内容,当然里面也可以预留占位符,灵活改变内容。

如果信息填写成功,并审核通过之后会回显如下内容:

接着就要开始创建应用了:

3、创建你的云 API 密钥

地址:console.cloud.tencent.com/cam/capi

ok,此刻我们的所有准备工作都已经做完了,那此时我们应有如下的资源:

  1. 短信套餐(就是你能发送多少条短信的资格)
  2. 短信签名
  3. 短信模板
  4. 应用
  5. 云 API

4、Java 编码实现短信发送

现在是万事俱备了,就差写代码实现了。而因为腾讯对于 API 鉴权这块非常复杂所以腾讯建议我们使用他们提供的 SDK 进行开发,所以本次代码的编写也其 SDK 上做了一些微调而已。

1)引入依赖:

 

xml

复制代码

<!-- 腾讯短信sdk --> <dependency> <groupId>com.tencentcloudapi</groupId> <artifactId>tencentcloud-sdk-java</artifactId> <version>3.1.270</version> </dependency>

2)编写短信发送 util

 

java

复制代码

// 注意引入 lombok @Slf4j public class SendSmsUtil { public static Boolean sendSms(SendSmsRequest request) { Credential cred = new Credential(request.getSecretId(), request.getSecretKey()); SmsClient client = new SmsClient(cred, "ap-guangzhou"); final var req = new com.tencentcloudapi.sms.v20210111.models.SendSmsRequest(); req.setPhoneNumberSet(new String[]{"+86" + request.getPhone()}); req.setSmsSdkAppId(request.getSmsSdkAppId()); req.setSignName(request.getSignName()); req.setTemplateId(request.getTemplateId()); req.setTemplateParamSet(request.getTemplateParamSet()); SendSmsResponse res = null; try { res = client.SendSms(req); } catch (TencentCloudSDKException e) { log.error("发送短信出错:", e); return Boolean.FALSE; } log.error("发送短信结果:", SendSmsResponse.toJsonString(res)); if (Objects.nonNull(res.getSendStatusSet()) && res.getSendStatusSet().length > 0 && "Ok".equals(res.getSendStatusSet()[0].getCode())){ return Boolean.TRUE; } return Boolean.FALSE; } /** * 参数对象 */ @Data public static class SendSmsRequest { /** * 电话 */ private String phone; /** * 短信签名内容,必须填写已审核通过的签名 */ private String signName; /** * 模板 ID: 必须填写已审核通过的模板 ID */ private String templateId; /** * 模板参数: 模板参数的个数需要与 TemplateId 对应模板的变量个数保持一致,若无模板参数,则设置为空 */ private String[] templateParamSet; /** * 应用id */ private String smsSdkAppId; /** * 云api密钥中的 secretId */ private String secretId; /** * 云api密钥中的 secretKey */ private String secretKey; } }

3)测试

 

java

复制代码

public class SendSmsUtil { public static void main(String[] args) { SendSmsRequest request = new SendSmsRequest(); request.setPhone("电话"); request.setSmsSdkAppId("应用id"); request.setSecretId("API的SecretId"); request.setSecretKey("API的SecretKey"); request.setSignName("签名内容"); request.setTemplateId("模板id"); // 这个值,要看你的模板中是否预留了占位符,如果没有则不需要设置 request.setTemplateParamSet(new String[]{"模板中的参数值,如果没有则为空"}); SendSmsUtil.sendSms(request); } }

此时,手机会收到一条短信:

到此呢,我们对接腾讯短信这一功能就算是实现了,但是这仅仅是开发的一部分,我们只是封装了一个小小的发送短信工具类而已。还没有结合具体的业务来运用这个短信发送功能,后续我打算用该功能实现一个用户注册,并考虑性能、安全等因素对其进行优化

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

花了 44 大洋,我实现 Java 发送短信功能! 的相关文章

随机推荐

  • mysql怎么让表中某一列字段按某字符分割一行变成多行

    注意暂时看不懂的请看下列的解析方法 代码下面有具体解释 SELECT a XH substring index substring index a QZYSBM b help topic id 1 1 AS splitName FROM S
  • 【C++】deque容器

    0 前言 1 deque构造函数 include
  • 计网实验A3:简单的web服务器

    文章目录 计网实验A3 简单的web服务器 实验介绍 相关背景介绍 Socket编程接口 HTTP传输协议 实验功能要求 总体设计 详细设计 数据结构设计 函数分析 调试设计 运行结果 实验总结 困难与解决 心得与思考 计网实验A3 简单的
  • Andrew Ng机器学习算法入门((六):多变量线性回归方程求解

    多变量线性回归 之前讨论的都是单变量的情况 例如房价与房屋面积之前的关系 但是实际上 房价除了房屋面积之外 还要房间数 楼层等因素相关 那么此时就变成了一个多变量线性回归的问题 在实际问题中 多变量的线性回归问题是更加常见的 下面这个例子就
  • Tomcat 相关配置参数说明,性能调优

    Tomcat 相关配置参数说明 1 server xml connect中相关参数说明
  • 爬虫简单爬取网页图片

    仅供学习 请遵守法律法规和robots协议 请在爬取时设置爬取延时 防止给网站造成不必要的麻烦和损失 也避免给自己送进去 爬取图片一般需要导入的库有 import requests import re 正则表达式 import os os用
  • 多线程提高spark streaming数据写入到数据库

    多线程提高spark streaming数据写入到数据库 需求 集群环境资源有限 需要跑多个spark streaming任务 每个任务必须占据1核 cpu利用率很低 需要对数据进行实时统计更新到数据库mysql给业务实时展示 数据聚合程度
  • java-打印项目相对路径的根目录

    IDEA里 System out println System getProperty user dir
  • Java中栈Stack的bug(继承) 以及自己实现一个栈 支持范型 动态扩展

    问题 解决一 封装Stack 解决二 自己实现 Array java ArrayStack java 问题 import java util Stack public class Main public static void main S
  • 【论文笔记】对比学习综述

    跟李沐学AI的b站视频视频 论文精读笔记第五期 https www bilibili com s video BV19S4y1M7hm 最后有总结 请添加图片描述
  • Java 中通过 key 获取锁的正确方式

    一 概览 本文我们将了解如何通过特定键获取锁 以保证该键上的操作的线程安全 并且不妨碍其他键 一般来说 我们需要实现两个方法 void lock String key void unlock String key 本文以字符串作为键为例 大
  • hive报错FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException

    问题描述 创建表时 没有问题 简单插入数据出现这个报错 hive报错FAILED SemanticException org apache hadoop hive ql metadata HiveException Failed to ex
  • ffmpeg windows编译及调试完整版

    目录 编译 基础环境准备 依赖环境安装 依赖库安装 X264 fdk aac X265 ffmpeg 4 3 6 调试 基础项目环境搭建 VS2019项目创建 VS2019项目代码 vs2019配置 VS2019调试 编译 基础环境准备 1
  • 多行字符串无法匹配问题处理

    关于多行字符串无法匹配的问题 处理当前问题 需要加上下面的东西 Pattern MULTILINE Pattern DOTALL 这样才能处理多行问题 防止拿不到匹配符中的效果 这里简单的处理方式入如下所示 Pattern patternC
  • 《MySQL实战45讲》读后感 21

    在上一篇文章中 我和你介绍了间隙锁和 next key lock 的概念 但是并没有说明加锁规则 间隙锁的概念理解起来确实有点儿难 尤其在配合上行锁以后 很容易在判断是否会出现锁等待的问题上犯错 所以今天 我们就先从这个加锁规则开始吧 首先
  • aspose java api_NetBeans中如何下载并使用Aspose Java API和示例

    为了提升文件格式应用程序界面 API 的用户体验 Java NetBeans是Java开发人员在管理Java项目 开发组件或应用程序时使用最多的集成开发环境之一 为了让他们在NetBeans项目中通过一个简单的点击就能下载和使用多个Aspo
  • NITIRE 2023官方的PSNR及SSIM计算代码

    NITIRE 2023官方的PSNR及SSIM计算代码 问题描述 做图像复原任务时 总避免不了计算PSNR和SSIM等图像质量评估指标 但是网上实在是太多计算这类指标的代码了 不同代码计算的结果还可能存在差异 有使用matlab计算SSIM
  • 提高C++性能的编程技术笔记:多线程内存池+测试代码

    为了使多个线程并发地分配和释放内存 必须在分配器方法中添加互斥锁 全局内存管理器 通过new 和delete 实现 是通用的 因此它的开销也非常大 因为单线程内存管理器要比多线程内存管理器快的多 所以如果要分配的大多数内存块限于单线程中使用
  • MySQL多表操作:建表与多表查询

    目录 多表间的建表原则 一对多 多对多 一对一 实例演示多表查询 数据准备 多表查询 笛卡尔积 内连接 隐式内连接 显式内连接 外连接 左外连接 右外连接 子查询 子查询的多种情况 多表间的建表原则 一对多 如分类与商品是一对多的关系 一个
  • 花了 44 大洋,我实现 Java 发送短信功能!

    本篇为从 0 到 1 的一个 用 Java 对接腾讯短信发送功能的一篇流程文章 而标题中的 44 大洋则是用来购买短信套餐 当然如果你是首次使用腾讯云平台则可以享受 免费使用 这一功能 我是老用户 那 废话不多说 我们往下看对接步骤 1 短