阿里云短信服务

1.在项目中创建短信服务模块
2.进入阿里云控制台
        1.申请签名管理

        2.申请模板管理

                模板内容中显示短信内容

3.引入相关依赖

      

<dependencies>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
    </dependency>
</dependencies>

4.编写Service层逻辑

//可以使用redis来设置验证码有效时间

controller层

{

    @Autowired
    private MsmService msmService;

    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    //发送短信方法
    @GetMapping("send/{phone}")
    public R sendMsm(@PathVariable String phone) throws ClientException {
        //现在redis中获取验证码,如果获取直接返回
        String code = redisTemplate.opsForValue().get(phone);
        if (!StringUtils.isEmpty(code)){
            return R.ok();
        }
        //获取不到在进行发送短信
        //生成随机的值,传递给阿里云进行发送
        code = RandomUtil.getFourBitRandom();
        Map<String,Object> param = new HashMap<>();
        param.put("code",code);
        //调用service调用短信发送方法
        Boolean isSend = msmService.send(param,phone);
        if (isSend){
            //发送成功,把发送的验证码放到redis中
            //设置五分钟的有效时长
            redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);
            return R.ok();
        }
        return R.error().message("短线发送失败");
    }
}

service层

public Boolean send(Map<String, Object> param, String phone) throws ClientException {
    DefaultProfile  profile = DefaultProfile.getProfile("default",
            "LTAI5t9poxhTjaYmgNAQi2ep",
            "ot4MuXpI5g4koZaQXDgX3sDUGmLY9b");
    DefaultAcsClient client = new DefaultAcsClient(profile);

    //设置相关参数
    CommonRequest request = new CommonRequest();
    //request.setProtocol(ProtocolType.HTTPS);
    request.setMethod(MethodType.POST);
    request.setDomain("dysmsapi.aliyuncs.com");
    request.setVersion("2017-05-25");
    request.setAction("SendSms");

    //设置发送相关的参顺
    request.putQueryParameter("PhoneNumbers",phone); //手机号
    request.putQueryParameter("SignName",""); //申请的签名名称
    request.putQueryParameter("TemplateCode",""); //模板名称
    request.putQueryParameter("TemplateParam", JSONObject.toJSONString(param)); //验证码

    //最终的发送
    CommonResponse response = client.getCommonResponse(request);
    return response.getHttpResponse().isSuccess();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值