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("手机号码");
    }
}

 

posted @ 2022-05-15 22:12  RFAA  阅读(790)  评论(0编辑  收藏  举报