先去官网申请secretId, secretKey,然后创建对应的模板
maven引入包
<dependency >
<groupId > com.tencentcloudapi</groupId >
<artifactId > tencentcloud-sdk-java</artifactId >
<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 = "" ;
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));
}
public static void sendSmsRemind (String phone, List<String> templateParam, String templateId) {
sendMsg(smsModel(phone, templateId, templateParam));
}
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();
}
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 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) {
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 {
@JSONField(name = "TemplateID")
private String TemplateID;
@JSONField(name = "Sign")
private String Sign;
@JSONField(name = "SmsSdkAppid")
private String SmsSdkAppid;
@JSONField(name = "PhoneNumberSet")
private List<String> PhoneNumberSet;
@JSONField(name = "TemplateParamSet")
private List<String> TemplateParamSet;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!