51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

腾讯云短信发送Demo【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可登录 短信控制台 查看,若向境外手机号发送短信,仅支持使用国际/港澳台短信模板。      /     @JSONField(name = "TemplateID")     private String TemplateID;     /*      * 短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名,      * 签名信息可登录 短信控制台 查看。注:国内短信为必填参数。      /     @JSONField(name = "Sign")     private String Sign;     /*      * 短信SdkAppid在 短信控制台 添加应用后生成的实际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; }

赞(10)
未经允许不得转载:工具盒子 » 腾讯云短信发送Demo【java】