SpringBoot实现短信发送(结合腾讯云短信接口)
SpringBoot实现短信发送(结合腾讯云短信接口)
这里使用腾讯云的短信发送功能,有100条免费的短信可以使用,就是步骤有点麻烦
第一步:注册公众号
微信公众平台官网:微信公众平台
注册完成后登陆,点击公众号设置,需要将公众号的信息整个进行截图,可以采用QQ的长截图功能
第二步:登录腾讯云
腾讯云地址:腾讯云
登陆后点击国内短信→签名管理→创建签名
创建正文模板,其实这里就是短信要发送的内容
这里需要等待审核,如果审核失败有问题的话可以联系下客服
第三步:代码实现
Maven
<!--腾讯云短信--> <dependency> <groupId>com.github.qcloudsms</groupId> <artifactId>qcloudsms</artifactId> <version>1.0.6</version> </dependency>
腾讯云参数类
public final class SmsConstant { //SDK APP_ID public static final int APP_ID = ; //SDK APP_KEY public static final String APP_KEY=""; //模板ID,如果需要多个模板可更改为可变参数 public static final int TEMPLATE_ID = ; //签名 public static final String SIGN = ""; }
前两个参数获取方式:
第三个参数获取方式:
第四个参数获取方式:
发送短信工具类
这里其实可以将验证码保存至redis,并设置过期时间,即可实现验证码的有效时间
/** * 发送手机验证码工具类. */ @Component public class SendSmsUtil {public String sendSms(String phone){ // 生成随机数 String code=createRandom(); SmsSingleSenderResult result =null; try { // 模板需要的参数 String[] params = {code,"3"}; SmsSingleSender ssender = new SmsSingleSender(SmsConstant.APP_ID, SmsConstant.APP_KEY); // 单发短信 result = ssender.sendWithParam("86", phone, SmsConstant.TEMPLATE_ID, params, SmsConstant.SIGN, "", ""); } catch (JSONException e) { // json解析错误 e.printStackTrace(); return "验证码发送失败"; } catch (IOException e) { // 网络IO错误 e.printStackTrace(); return "验证码发送失败"; } catch (HTTPException e) { e.printStackTrace(); return "验证码发送失败"; } if(!"OK".equals(result.errMsg)){ return "验证码发送失败"; } System.out.println(result.errMsg); return "success"; } /** * 验证码长度(通过更改i的最大值) * 获取6位随机数 * @return */ public static String createRandom(){ Random random = new Random(); String result=""; for (int i=0;i<6;i++) { result+=random.nextInt(10); } return result; } }
测试
@SpringBootTest class Demo2ApplicationTests { @Autowired private SendSmsUtil sendSmsUtil; @Test void sendSms(){ sendSmsUtil.sendSms("手机号码"); } }