Java 接入腾讯云 SMS
文章目录
- Java 接入腾讯云 SMS
- 1. 开通短信服务
- 1.1 注册腾讯云账号
- 1.2 开通短信服务
- 2. 配置短信内容
- 2.1 创建签名
- 2.2 创建正文模板
- 3. 发送短信
本文将介绍如何通过 Java 接入腾讯云 SMS 实现发短信功能。
1. 开通短信服务
1.1 注册腾讯云账号
注册 - 腾讯云 (tencent.com)
1.2 开通短信服务
登陆短信控制台,勾选我已阅读并同意 腾讯云短信服务协议,单击开始接入即可开通。
2. 配置短信内容
一个完整的短信由短信签名和短信正文内容组成,可以根据业务需求分别设置不同的模板,然后组合成最终短信内容:【短信签名】 短信正文内容
。
2.1 创建签名
进入签名管理结合实际情况设置相关参数点击确定即可。
2.2 创建正文模板
进入正文模板管理结合实际情况设置相关参数点击确定即可。
3. 发送短信
发送短信分为 API 与 SDK 两种方式,本文选择通过 Java SDK 的方式接入,具体过程如下:
-
添加 Maven 依赖:
<dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>3.1.769</version> </dependency>
-
创建相关参数配置类:
import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration;/*** 腾讯云配置.** @author <a href="mailto:xiaoQQya@126.com">xiaoQQya</a>* @since 2023/05/16*/ @Data @Configuration @ConfigurationProperties(prefix = "tencentcloud") public class TencentCloudConfig {/*** 腾讯云账户信息*/private Account account = new Account();/*** 腾讯云短信服务信息*/private Sms sms = new Sms();@Datapublic static class Account {/*** 腾讯云账户密钥对*/private String secretId;/*** 腾讯云账户密钥对*/private String secretKey;}@Datapublic static class Sms {/*** 短信应用 ID*/private String sdkAppId;/*** 短信签名内容*/private String signName;/*** 短信模板 ID*/private String templateId;} }
-
配置上述各项参数:
# application.yml tencentcloud:account:secret-id: "AKIDiHfqmTyEF31lGWYNxHMDpCKcibGgttfc"secret-key: "MUO2g8LJ2Zu2xe8PQGtKYhdOwGNHzUlP"sms:sdk-app-id: "1400706213"sign-name: "腾讯云"template-id: "1797899"
-
创建工具类:
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.v20210111.SmsClient; import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest; import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;/*** 短信工具类.** @author <a href="mailto:xiaoQQya@126.com">xiaoQQya</a>* @since 2023/05/16*/ @SuppressWarnings(value = {"unused"}) public class SmsUtils {private SmsUtils() {}/*** 发送短信.** @param secretId 腾讯云账户密钥对* @param secretKey 腾讯云账户密钥对* @param sdkAppId 短信应用 ID* @param signName 短信签名内容* @param templateId 模板 ID* @param templateParamSet 模板参数* @param phoneNumberSet 下发手机号码, 示例 +8613711112222* @return 发送结果* @throws TencentCloudSDKException TencentCloudSDKException 异常*/public static SendSmsResponse sendSms(String secretId,String secretKey,String sdkAppId,String signName,String templateId,String[] templateParamSet,String[] phoneNumberSet) throws TencentCloudSDKException {Credential cred = new Credential(secretId, secretKey);HttpProfile httpProfile = new HttpProfile();httpProfile.setReqMethod("POST");httpProfile.setConnTimeout(60);httpProfile.setEndpoint("sms.tencentcloudapi.com");ClientProfile clientProfile = new ClientProfile();clientProfile.setSignMethod("HmacSHA256");clientProfile.setHttpProfile(httpProfile);SmsClient client = new SmsClient(cred, "ap-beijing", clientProfile);SendSmsRequest req = new SendSmsRequest();req.setSmsSdkAppId(sdkAppId);req.setSignName(signName);req.setTemplateId(templateId);req.setTemplateParamSet(templateParamSet);req.setPhoneNumberSet(phoneNumberSet);return client.SendSms(req);} }
-
发送短信:
SmsUtils.sendSms(tencentCloudConfig.getAccount().getSecretId(),tencentCloudConfig.getAccount().getSecretKey(),tencentCloudConfig.getSms().getSdkAppId(),tencentCloudConfig.getSms().getSignName(),tencentCloudConfig.getSms().getTemplateId(),new String[]{"hello", "world"},new String[]{"+8613287236743", "+8615823753956"} );
参考:
- 短信 国内短信快速入门-国内短信-文档中心-腾讯云 (tencent.com)
- 短信 Java SDK-SDK 文档-文档中心-腾讯云 (tencent.com)