发送短信
- 01 注册微信公众号
- 02 注册腾讯云账号
- 03 创建签名和模板
- 第一步 创建签名
- 第二部 创建模板
- 04 发送短信
01 注册微信公众号
在百度中寻找微信公众平台,并在进入官网后注册。在账号注册过程中,需选择订阅号(个人)。注册成功后,请保存账号详情的截图,以备后续腾讯云短信签名申请之用。
02 注册腾讯云账号
你可以按照以下步骤登录并注册腾讯云,并进行个人实名认证:
-
打开腾讯云官网(腾讯云官网 ),点击右上角的“注册”按钮。
-
在注册页面中,填写邮箱、密码要什么就填什么
-
点击“注册”按钮后,进入填写个人信息的页面。
-
填写完毕后,会进入腾讯云的控制台页面。在这里可以购买云产品、管理云服务等。
-
为了完成个人实名认证流程,需要先进行手机验证。在控制台页面左侧的菜单中选择“账号中心”,然后点击“安全设置”-“手机验证”进行验证。
-
接下来,在账号中心页面的实名认证栏目中点击“去认证”按钮。
-
选择个人认证方式,并填写真实姓名、身份证号码等信息。上传身份证正反面照片,然后点击“提交”按钮。
-
完成实名认证后,等待审核通过即可。
以上就是登录腾讯云并完成个人实名认证流程的所有步骤。
当你通过审核后,请打开 腾讯云短信服务 ,在该页面上,你会看到免费试用的选项。请点击进入。
03 创建签名和模板
第一步 创建签名
按要求填写即可
- 签名内容:你的微信公众号名字+公众号。例如:xxx公众号。
- 经办人:你自己。
- 申请说明:填写你的公众号全名。
第二部 创建模板
- 模板名称:没有特别的要求,可以自由填写
- 短信类型:普通短信
- 短信内容:标准模板或者自己编写
- 申请说明:短信模板的场景
例如,申请的短信模板为:
亲爱的{1}小朋友,祝你童节快乐!愿你们拥有纯真的笑容和快乐的时光。希望你在成长的路上,始终保持好奇心和勇气,用积极的态度面对一切挑战。祝你健康快乐,未来可期!
申请说明内容可以为:
这个短信模板用于向儿童节受众发送祝福信息,以表达节日的祝福和推崇儿童在成长中保持快乐、积极、勇敢等正向品质的意向。该短信模板为发送对象为儿童节受众而准备
04 发送短信
以下是使用Spring Boot和腾讯云短信服务SDK实现发送短信的详细步骤
这里是我所使用的正文模板
- 在项目的 maven pom.xml 文件中,添加以下依赖:
<!-- # 版本在maven生效需要时间,如获取不到对应的版本,可以调低版本号-->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java-sms</artifactId>
<version>3.1.767</version>
</dependency>
- 在 Spring Boot 的 application.properties 或 application.yaml 中,添加腾讯云的 API 密钥和短信模板信息:
tencent:
sms:
# 腾讯云账户 secrtId,secretKey
secretId: A*IDR1Vmob9*TKvlNjqhIdjZ9U**Np1yf8LJ
keysecret: lHXX*n23pLb**tACzWnpb7NN7c*qZ2GF
# 短信应用ID:短信SdkAppId在 【短信控制台】添加应用后生成实际的SdkAppId
smsSdkAppId: 1400800002
# 短信签名内容:
signName: 编程日记公众号
# 模板ID:必须是已经审核通过的模板ID
templateId: 1817797
3.编写工具类
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 org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.util.Random;
@Component
public class MsmConstantUtils implements InitializingBean {
/** 腾讯云账户密钥对secretKey(在访问管理中配置) */
@Value("${tencent.sms.secretId}")
private String secretID ;
/** 腾讯云账户密钥对secretKey(在访问管理中配置) */
@Value("${tencent.sms.keysecret}")
private String secretKey ;
@Value("${tencent.sms.smsSdkAppId}")
private String smsSdkAppID ;
@Value("${tencent.sms.signName}")
private String signName ;
@Value("${tencent.sms.templateId}")
private String templateID ;
public static String SECRET_ID;
public static String SECRET_KEY;
public static String SMSSDKAPP_ID;
public static String SIGN_NAME;
public static String TEMPLATE_ID;
@Override
public void afterPropertiesSet() throws Exception {
SECRET_ID = secretID;
SECRET_KEY = secretKey;
SMSSDKAPP_ID = smsSdkAppID;
SIGN_NAME = signName;
TEMPLATE_ID = templateID;
}
/**
* 发送6位数字验证码到手机
* @param sixBitRandom 验证码
* @param phone 手机号
* @return
*/
public static boolean sendPhone(String sixBitRandom, String phone) {
//判断手机号是否为空
if (StringUtils.isEmpty(phone)) {
return false;
}
try{
// 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
// 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
Credential cred = new Credential(MsmConstantUtils.SECRET_ID, MsmConstantUtils.SECRET_KEY);
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("sms.tencentcloudapi.com");
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 实例化要请求产品的client对象,clientProfile是可选的 第二个参数是地域信息
SmsClient client = new SmsClient(cred, "ap-nanjing", clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
SendSmsRequest req = new SendSmsRequest();
//设置发送相关的参数
String[] phoneNumberSet1 = {"86"+phone};
req.setPhoneNumberSet(phoneNumberSet1);//发送的手机号
//设置固定的参数
req.setSmsSdkAppid(MsmConstantUtils.SMSSDKAPP_ID);// 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId
req.setSign(MsmConstantUtils.SIGN_NAME);//短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名
req.setTemplateID(MsmConstantUtils.TEMPLATE_ID);//模板 ID: 必须填写已审核通过的模板 ID
//发送的验证码
String[] templateParamSet1 = {sixBitRandom};//模板的参数 第一个是验证码,第二个是过期时间
req.setTemplateParamSet(templateParamSet1);//发送验证码
//发送短信
// 返回的resp是一个SendSmsResponse的实例,与请求对象对应
SendSmsResponse resp = client.SendSms(req);
System.out.println("resp"+resp);
// 输出json格式的字符串回包
System.out.println(SendSmsResponse.toJsonString(resp));
return true;
} catch (TencentCloudSDKException e) {
e.printStackTrace();
return false;
}
}
/**
* 随机生成验证码
* @param length 长度为4位或者6位
* @return
*/
public static String generateValidateCode(int length){
Integer code =null;
if(length == 4){
code = new Random().nextInt(9999);//生成随机数,最大为9999
if(code < 1000){
code = code + 1000;//保证随机数为4位数字
}
}else if(length == 6){
code = new Random().nextInt(999999);//生成随机数,最大为999999
if(code < 100000){
code = code + 100000;//保证随机数为6位数字
}
}else{
throw new RuntimeException("只能生成4位或6位数字验证码");
}
return code.toString();
}
}
- 在发送短信的控制器类中,使用 MsmConstantUtils类的sendPhone方法发送短信:
@RestController
@RequestMapping("/tencent")
public class tencentSmsController {
@GetMapping("/test")
public String test(String phone){
boolean b = MsmConstantUtils.sendPhone(MsmConstantUtils.generateValidateCode(6), phone);
return b ? "success":"fail";
}
}
以上就是使用 Spring Boot 和腾讯云短信服务 SDK发送短信的详细步骤,希望对你有帮助!