本文通过详细代码展示springboot项目如何整合腾讯云短信服务
1.添加依赖
<!--腾讯云短信服务-->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
</dependency>
2.发送短信的核心代码
package com.enterprise.lk.portal.utils;
import com.enterprise.lk.portal.model.Sms;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
// 导入 SMS 模块的 client
import com.tencentcloudapi.sms.v20190711.SmsClient;
// 导入要请求接口对应的 request response 类
import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
/**
* Tencent Cloud Sms Sendsms
* https://cloud.tencent.com/document/product/382/38778
*/
@Slf4j
@Component
@Configuration
public class SendSms {
@Value("${tencentcloud.sms.secretId}")
private String secretId;
@Value("${tencentcloud.sms.secretKey}")
private String secretKey;
@Value("${tencentcloud.sms.appId}")
private String appId;
public void sendPhoneTextMsg(Sms sms) {
try {
/* 必要步骤:
* 实例化一个认证对象,入参需要传入腾讯云账户密钥对 secretId 和 secretKey
* CAM 密钥查询:https://console.cloud.tencent.com/cam/capi*/
Credential cred = new Credential(secretId, secretKey);
/* 实例化 SMS 的 client 对象
* 第二个参数是地域信息,可以直接填写字符串 ap-guangzhou,或者引用预设的常量 */
SmsClient client = new SmsClient(cred, "");
/* 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
* 您可以直接查询 SDK 源码确定接口有哪些属性可以设置
* 属性可能是基本类型,也可能引用了另一个数据结构 */
SendSmsRequest req = new SendSmsRequest();
/* 短信应用 ID: 在 [短信控制台] 添加应用后生成的实际 SDKAppID,例如1400006666 */
String appid = appId;
req.setSmsSdkAppid(appid);
/* 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息 */
String sign = sms.getSign();
req.setSign(sign);
/* 模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID */
String templateID = sms.getTemplateId();
req.setTemplateID(templateID);
/* 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号]
* 例如+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号*/
req.setPhoneNumberSet(sms.getMobile());
/* 模板参数: 若无模板参数,则设置为空*/
req.setTemplateParamSet(sms.getParams());
/* 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
* 返回的 res 是一个 SendSmsResponse 类的实例,与请求对象对应 */
SendSmsResponse res = client.SendSms(req);
// 输出 JSON 格式的字符串回包
log.info(SendSmsResponse.toJsonString(res));
// 可以取出单个值,您可以通过官网接口文档或跳转到 response 对象的定义处查看返回字段的定义
log.info(res.getRequestId());
} catch (TencentCloudSDKException e) {
e.printStackTrace();
}
}
}
3.短信参数的javaBean代码
package com.enterprise.lk.portal.model;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 短信参数
*/
@Data
@Accessors(chain = true)
public class Sms {
/**
* 签名
*/
private String sign ;
/**
* 模板
*/
private String templateId;
/**
* 手机号
*/
private String[] mobile;
/**
* 模板参数 {}
*/
private String[] params;
}
# 腾讯云短信平台
tencentcloud.sms.secretId=**********
tencentcloud.sms.secretKey=**********
tencentcloud.sms.appId=**********
参考:腾讯云官方文档