Java 接入腾讯云 SMS 发短信(2023/06/02)
·
Java 接入腾讯云 SMS
本文将介绍如何通过 Java 接入腾讯云 SMS 实现发短信功能。
1. 开通短信服务
1.1 注册腾讯云账号
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(); @Data public static class Account { /** * 腾讯云账户密钥对 */ private String secretId; /** * 腾讯云账户密钥对 */ private String secretKey; } @Data public 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"} );
参考:
更多推荐
所有评论(0)