腾讯云短信发送【java】
先去官网申请secretId, secretKey,然后创建对应的模板
maven引入包
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
<!-- go to https://search.maven.org/search?q=tencentcloud-sdk-java and get the latest version. -->
<!-- 请到https://search.maven.org/search?q=tencentcloud-sdk-java查询所有版本,最新版本如下 -->
<version>3.1.836</version>
</dependency>
工具类
package com.hwd.campus.security.biz.utils;
import com.alibaba.fastjson.JSON;
import com.hwd.campus.common.common.api.ResultCode;
import com.hwd.campus.common.common.exception.BusinessException;
import com.tencentcloudapi.common.AbstractModel;
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.v20190711.SmsClient;
import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Slf4j
public class SmsUtil {
private static final String SMS_SDK_APP_ID = "";
/**
* 发送手机短信验证码
* <p>
* 您的动态验证码为:{1},此验证码{2}秒内有效,如非本人操作,请忽略本短信!
*
* @param phone 手机号
* @param verifyCode 验证码
* @param validTime 有效时间
*/
public static void sendPhoneVerifyCodeSecond(String phone, String verifyCode, long validTime) {
List<String> templateParamSet = new ArrayList<>();
templateParamSet.add(verifyCode);
templateParamSet.add(String.valueOf(validTime));
sendMsg(smsModel(phone, "", templateParamSet));
}
/**
* 短信发送提醒
*
* @param phone 手机号
* @param templateParam 参数
* @param templateId 模板Id
* @date 2023-08-23
* @author hhs
*/
public static void sendSmsRemind(String phone, List<String> templateParam, String templateId) {
sendMsg(smsModel(phone, templateId, templateParam));
}
/**
* 发送手机短信验证码
* <p>
* <p>
* 您的动态验证码为:{1},此验证码{2}分钟内有效,如非本人操作,请忽略本短信!
*
* @param phone 手机号
* @param verifyCode 验证码
* @param validTime 校验内容
*/
public static void sendPhoneVerifyCodeMinute(String phone, String verifyCode, long validTime) {
List<String> templateParamSet = new ArrayList<>();
templateParamSet.add(verifyCode);
templateParamSet.add(String.valueOf(validTime));
sendMsg(smsModel(phone, "", templateParamSet));
}
private static SmsModel smsModel(String phone, String templateId, List<String> templateParamSet) {
return SmsModel.builder().PhoneNumberSet(Collections.singletonList("+86" + phone))
.TemplateID(templateId).Sign("标头").TemplateParamSet(templateParamSet)
.SmsSdkAppid(SMS_SDK_APP_ID).build();
}
/**
* 发送短信
*
* @param model 模型
*/
private static void sendMsg(SmsModel model) {
try {
log.info("发送短信:" + model);
Credential cred = new Credential("secretId", "secretKey");
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("sms.tencentcloudapi.com");
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
SmsClient client = new SmsClient(cred, "", clientProfile);
//转换为String
String params = JSON.toJSONString(model);
SendSmsRequest req = AbstractModel.fromJsonString(params, SendSmsRequest.class);
SendSmsResponse resp = client.SendSms(req);
log.info("短信发送成功:" + AbstractModel.toJsonString(resp));
} catch (TencentCloudSDKException e) {
log.error("=========短信发送失败========" + e.getMessage());
throw new BusinessException(ResultCode.OPERATION_FAILURE, "=========短信发送失败========" + e.getMessage());
}
}
public static void main(String[] args) {
//13512765559
sendPhoneVerifyCodeSecond("phone", "验证码", 1);
}
}
实体参数
package com.hwd.campus.security.biz.utils;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Builder
@Data
public class SmsModel {
/**
* 模板 ID,必须填写已审核通过的模板 ID。
* 模板ID可登录 [短信控制台](<a href="https://console.cloud.tencent.com/smsv2">...</a>) 查看,若向境外手机号发送短信,仅支持使用国际/港澳台短信模板。
*/
@JSONField(name = "TemplateID")
private String TemplateID;
/**
* 短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名,
* 签名信息可登录 [短信控制台](<a href="https://console.cloud.tencent.com/smsv2">...</a>) 查看。注:国内短信为必填参数。
*/
@JSONField(name = "Sign")
private String Sign;
/**
* 短信SdkAppid在 [短信控制台](<a href="https://console.cloud.tencent.com/smsv2">...</a>) 添加应用后生成的实际SdkAppid,示例如1400006666。
*/
@JSONField(name = "SmsSdkAppid")
private String SmsSdkAppid;
/**
* 下发手机号码,采用 e.164 标准,格式为+[国家或地区码][手机号],单次请求最多支持200个手机号且要求全为境内手机号或全为境外手机号。
* 例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号。
*/
@JSONField(name = "PhoneNumberSet")
private List<String> PhoneNumberSet;
/**
* 模板参数,若无模板参数,则设置为空。
*/
@JSONField(name = "TemplateParamSet")
private List<String> TemplateParamSet;
}
腾讯云短信发送【java】的更多相关文章
- laravel 腾讯云短信发送
public function tecentSms(Request $request) { $phone = $request->input("hiphone"); $app ...
- Java调用腾讯云短信接口,完成验证码的发送(不成功你来砍我!!)
一.前言 我们在一些网站注册页面,经常会见到手机验证码的存在,这些验证码一般的小公司都是去买一些大的厂家的短信服务,自己开发对小公司的成本花费太大了!今天小编就带着大家来学习一下腾讯云的短信接口,体验 ...
- 轻松集成腾讯云短信服务实现短信发送(Java实现)
不论是阿里云还是腾讯云,要想在网站上实现短信发送功能,首先得保证你的网站域名是通过备案的,因为短信签名是需要用到备案过的域名截图,所以域名通过了,申请很快就会审批成功了. (说点题外话,备案的话,需要 ...
- java实现发短信功能---腾讯云短信
目录 java实现发短信功能 前言 开发环境 腾讯云 ---短信 代码 效果 结束语 java实现发短信功能 前言 如今发短信功能已经成为互联网公司的标配,本篇文章将一步步实现java发送短信 考察了 ...
- Python 腾讯云短信,发送手机验证码
1.安装包 pip install qcloudsms_py 2.准备好相关参数 腾讯云短信每个月赠送100条短信,申请一个应用,获取appid,然后创建短信签名,然后创建正文模版 3.发送短信 我们 ...
- Python使用腾讯云-短信服务发送手机短信
目前[腾讯云短信]为客户提供[国内短信].[国内语音]和[海外短信]三大服务,腾讯云短信SDK支持以下操作: 国内短信 国内短信支持操作: • 指定模板单发短信 • 指定模板群发短信 • 拉取短信回执 ...
- 为开源项目贡献代码-pycharm使用git-登录注册功能分析-判断手机号存在接口-多种方式登录接口-腾讯云短信申请
目录 为开源项目贡献代码-pycharm使用git-登录注册功能分析-判断手机号存在接口-多种方式登录接口-腾讯云短信申请 git内容大回顾 今日内容概要 今日内容详细 1 为开源项目贡献代码 2 p ...
- php腾讯云短信验证码
腾讯云短信控制台:https://console.cloud.tencent.com/sms 腾讯云短信 PHP SDK:https://github.com/qcloudsms/qcloudsms_ ...
- 反射实现Model修改前后的内容对比 【API调用】腾讯云短信 Windows操作系统下Redis服务安装图文详解 Redis入门学习
反射实现Model修改前后的内容对比 在开发过程中,我们会遇到这样一个问题,编辑了一个对象之后,我们想要把这个对象修改了哪些内容保存下来,以便将来查看和追责. 首先我们要创建一个User类 1 p ...
- 基于tp3.2的腾讯云短信验证码的实现
新手小白在公司要完成短信验证码注册功能,最初由于没有经验,网上的教程又不是很全,便参考着官方API文档,进行开发 直接进入正题:使用composer下载腾讯云短信接口(记得添加依赖).在项目目录下新建 ...
随机推荐
- datawhale-leetcode打卡 第013-025题
搜索旋转排序数组(leetcode-033) 这道题非常简单,基本送分,之前做的代码还能用上 class Solution: def search(self, nums: List[int], tar ...
- DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
2025年伊始,Meta创始人扎克伯格的一则声明引发全球程序员热议:"AI将在今年达到中级工程师水平,逐步接管编程工作."与此同时,国产AI大模型DeepSeek的爆火,让一名8岁 ...
- c#securityexception不允许所请求的注册表访问权
开机自启动程序如下: if (!System.IO.File.Exists(filename)) throw new Exception("该文件不存在 ...
- Thymeleaf 嵌套循环
<label th:each="role:${roles}" class="check-box"> <input th:each=" ...
- Vue3 性能优化十大技巧:打造高性能应用的终极指南
在现代前端开发中,性能优化是提升用户体验和系统效率的关键.Vue3 作为目前最流行的前端框架之一,提供了许多内置的性能优化工具和方法.本文将深入探讨 Vue3 中的十大性能优化技巧,帮助你从零开始构建 ...
- C++最基本调用动态链接库dll方法的小结
针对当时初学动态链接.静态链接,有些文档整理一下发出来算是给自己和读者一个小结. 首先创建DLL 编辑头文件 dllmain.h 头文件: #pragma once #if defined(_DLL_ ...
- 玩转摄像头之MT9V034(最新打样,展示下,欢迎观摩,哈哈)低照度 红外透视应用
分辨率:752*480 低照度 效果超好先上图 图像处理.物联网.fpga.stm32研究 我的店铺:ccjt.taobao.com
- EAR_v3 《浮声三》 智能化图书管理系统
EAR_v3 <浮声三> 搭建于 Actix_Web 框架下的智能化图书管理系统 本项目的前身是 <Rusty_Borders 危墙> 的 在线控制系统 部分,经过大量开发工作 ...
- 修改docker的默认存储位置及镜像存储位置
前言 Docker 默认安装的情况下,会使用 /var/lib/docker/ 目录作为存储目录,用以存放拉取的镜像和创建的容器等. 不过由于此目录一般都位于系统盘,遇到系统盘比较小,而镜像和容器多了 ...
- centos操作collection
Centos修改IP地址 https://blog.csdn.net/weixin_45193791/article/details/124646170 Centos打开.修改.保存文件 https: ...