SMS发送短信

进入阿里云

阿里云官网

  1. 点击AccessKey, 使用子用户AccessKey
    在这里插入图片描述

在这里插入图片描述
2. 先创建用户组,后创建用户
在这里插入图片描述

  • 我创建的用户组
    在这里插入图片描述
    在这里插入图片描述创建好用户后需要及时保存密码 AccessKeySecret 代码中连接阿里云需要用到
    在这里插入图片描述
  • 用户组添加权限,用户绑定用户组
    在这里插入图片描述在这里插入图片描述

短信服务

在这里插入图片描述

  • 短信服务界面
    在这里插入图片描述

  • 快速学习和测试
    -在这里插入图片描述

  • 默认对同一用户每日发送短信次数 10条,可以自己设置
    在这里插入图片描述

国内短信

在这里插入图片描述

  1. 需要申请资质,需要通过身份证信息,一般需要1-2个小时

在这里插入图片描述

  1. 添加签名

申请的理由要充分, 如:公司业务需要使用

在这里插入图片描述提醒如果签名来源选的是【测试或学习】,那么使用的时候只能用自己的手机号测试,不能对没有陌生人发送,如果需要对其它人发送,就不要选择【测试或学习】
在这里插入图片描述

签名的名字代码中会使用到

  1. 添加模板

申请的理由要充分,如:公司业务需要使用

在这里插入图片描述
模板中的code代码中会使用到

申请时间一般需要1-2个小时通过

搭建SpringBoot项目

参考SDK示例

SDK文档
在这里插入图片描述

  • SDK-maven
<dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>aliyun-java-sdk-core</artifactId>
   <version>4.1.0</version>
</dependency>
  • 还需要使用到其它pom
<!--整合redis的依赖  包括连接池  json工具包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

控制层代码展示



@RestController
@CrossOrigin //跨域支持
public class SmsApiController {


    @Autowired
    private SendSms sendSms;

    @Autowired
    private RedisUtil redisUtil;  //封装了RedisTemplate
//    @Autowired
//    private RedisTemplate<String, Object> redisTemplate;

    @GetMapping("/send/{phone}")
    public String code(@PathVariable("phone") String phone){
        //在redis中获取code
        String code = (String) redisUtil.get(phone);
        if(!StringUtil.isNullOrEmpty(code)){
            return phone + ":" + code + "已存在,还没有过期";
        }

        //生成验证码并存储到redis
        code = this.randomNum();
        HashMap<String,Object> param = new HashMap<>();
        param.put("code",code);
        boolean isSend =  sendSms.send(phone,"模板code",param);
        //如果发送成功
        if(isSend){
        	//5分钟后过期
            redisUtil.set(phone,code,5, TimeUnit.MINUTES);
            return phone + ":" + code + "发送成功!";

        }
 
        System.out.println(redisUtil.hasKey(phone));
        System.out.println(redisUtil.get(phone));
        return "发送失败!";
    }

    public String randomNum(){

        StringBuilder builder = new StringBuilder();
        Random random = new Random();
        for (int i = 0; i < 6; i++) {
            int code = random.nextInt(10);
            builder.append(code);
        }
        return builder.toString();
    }
}

服务层代码展示

 
/**
 * 发送短信的接口
 */
public interface SendSms {

    public boolean send(String phoneNum, String templateCode , Map<String,Object> code );

}


@Service
public class SendSmsImpl implements SendSms {
    @Override
    public boolean send(String phoneNum, String templateCode, Map<String, Object> code) {
        //连接阿里云
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou","LTAI5tNGrhGvYsuGmqoAVyfe","用户密码(AccessKeySecret )");
        IAcsClient client = new DefaultAcsClient(profile);


        //构建请求
        CommonRequest request = new CommonRequest();
        request.setMethod(MethodType.POST);
        request.setDomain("dysmsapi.aliyuncs.com"); //不变
        request.setVersion("2017-05-25");//不变
        request.setAction("SendSms");//不变

        //自定义参数
        request.putQueryParameter("PhoneNumbers",phoneNum);
        request.putQueryParameter("SignName","小江科技公司");
        request.putQueryParameter("TemplateCode",templateCode);
        //构建短信验证码


        request.putQueryParameter("TemplateParam", JSONObject.toJSONString(code));
        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
            return response.getHttpResponse().isSuccess();
        }catch (Exception e){
            e.printStackTrace();
        }


        return false;
    }
}

注意的是发送短信之前要保证阿里云钱包里面有钱,一条短信大概0.04

小结

  1. 创建用户
  2. 申请资源
  3. 创建项目

希望大家都可以成功完成这个小Demo

具体可以看视频希望可以帮助到你狂神说java (关注)

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小江||小廖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值