一、前期准备
多方比较后,发现阿里云必须得公司注册sms服务
腾讯云个人可以采用微信公众号的方式,注册SMS服务,门槛比较低。
1.1 注册微信公众号
选择个人注册,只需要身份证和一个微信号。过程略...
1.2 创建签名
1.3 申请正文模板
选择任一模板进行申请即可。
注:必须在先完成1.2后再申请1.3,否则不通过。
1.4 腾讯云秘钥
秘钥地址:应用列表 - 应用管理 - 短信 - 控制台 (tencent.com)
appid和appKey位置,应用管理 -> 应用列表 -> 系统默认应用 -> 点击后可以看到
二、代码编写
2.1 依赖添加
<dependency>
<groupId>com.github.qcloudsms</groupId>
<artifactId>qcloudsms</artifactId>
<version>1.0.6</version>
</dependency>
2.2 Sms.class:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Sms {
String phoneNumber;
String code;
int min;
}
2.3 SmsController:
@PostMapping("/send")
public String sendSms(@RequestBody Sms sms) {
// 下面的信息请改成自己的
Integer appId = 14006xxx6; // id 和 key , 应用管理 -> 应用列表 -> 系统默认应用 -> 点击后可以看到
String appKey = "6d0378373xxxxe9687b2167c9";
Integer templateId = 1316925; // 国内短信->正文模板管理->ID
String signContent = "前端技能树"; // 国内短信->签名管理->签名内容
// 验证码
Integer code = RandomUtils.randInt(1000, 9999);
try {
String[] params = {code.toString(), Integer.toString(sms.getMin())};
SmsSingleSender sender = new SmsSingleSender(
appId, appKey
);
SmsSingleSenderResult result = sender.sendWithParam(
"86",
sms.getPhoneNumber(),
templateId,
params,
signContent,
"",
""
);
System.out.println(result);
// 保存到redis中
// redisTemplate.opsForValue().set(sms.getPhoneNumber(), code);
// 设置过期时间
// redisTemplate.expire(sms.getPhoneNumber(), sms.getMin(), TimeUnit.MINUTES);
return result.toString();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}