开通阿里云短信服务

开通阿里云短信服务阿里云短信服务1,阿里云用户权限操作1.1、找到后台放在个人头像上面选择AccessKey管理1.2、选择子用户1.3、创建用户组1.4、给用户组添加权限然后就可以看到你的权限里面多了一个sms的短信权限1.5、创建用户注意!注意!注意点击确认后只可以看到一次密码返回就看不到了注意!注意!注意点击确认后只可以看到一次密码返回就看不到了注意!注意!注意点击确认后只可以看到一次密码返回就看不到了1.6、把用户加入到用户组2、开通阿里云短信服务

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

阿里云短信服务

1,阿里云用户权限操作

1.1、找到后台放在个人头像上面 选择 AccessKey 管理

请添加图片描述

1.2、选择 子用户

请添加图片描述

1.3、创建用户组

请添加图片描述
在这里插入图片描述

1.4、给用户组添加权限

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

然后就可以看到你的权限里面多了一个sms的短信权限

1.5、创建用户

在这里插入图片描述
在这里插入图片描述

注意!注意!注意点击确认后只可以看到一次密码返回就看不到了

注意!注意!注意点击确认后只可以看到一次密码返回就看不到了

注意!注意!注意点击确认后只可以看到一次密码返回就看不到了

在这里插入图片描述

在这里插入图片描述

1.6、把用户加入到用户组

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、开通阿里云短信服务

2.1、搜索短信服务

在这里插入图片描述

2.1、添加模板

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3、添加签名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、编写代码

3.1、创建一个springboot项目

3.2、导入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.76</version>
</dependency>

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.10</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Jetbrains全家桶1年46,售后保障稳定

3.3、model

package org.kang.aliyundxfw.model;

import lombok.Data;

import java.util.Map;

/** * @author 康康 * @create 2021-10-30 14:42 * @explain */
@Data
public class SendSms { 
   

    /** * 手机号 */
    private String PhoneNumbers;

    /** *模板 */
    private final String templateCode="SMS_227260007";

    /** * 签名 */
    private final String SignName="康康科技";

    /** * 验证码 */
    private Map<String,Object> code;

}

3.4、Service

package org.kang.aliyundxfw.service;

import org.kang.aliyundxfw.model.SendSms;

/** * @author 康康 * @create 2021-10-30 14:39 * @explain */

public interface SendSmsService { 
   
    boolean send(SendSms sendSms);
}

3.4.1、impl

package org.kang.aliyundxfw.service.impl;

import com.alibaba.fastjson.JSON;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import org.kang.aliyundxfw.model.SendSms;
import org.kang.aliyundxfw.service.SendSmsService;
import org.springframework.stereotype.Service;

/** * @author 康康 * @create 2021-10-30 15:07 * @explain */
@Service
public class SendSmsServiceImpl implements SendSmsService { 
   
    @Override
    public boolean send(SendSms sendSms) { 
   
        //连接阿里云 第二个参数是 AccessKey的id 第三个参数是 AccessKey的密码
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI5tQHFJoDijGxRYgoDZYM", "LRn4x2XHvwuOCNn6lYWrZxYPROmXsh");

        //构建请求
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");

        //自定义参数 (手机号,模板,签名)
        request.putQueryParameter("PhoneNumbers",sendSms.getPhoneNumbers());
        request.putQueryParameter("TemplateCode",sendSms.getTemplateCode());
        request.putQueryParameter("TemplateParam", JSON.toJSONString(sendSms.getCode()));
        try { 
   
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
            //返回成功还是失败
            return response.getHttpResponse().isSuccess();
        } catch (ServerException e) { 
   
            e.printStackTrace();
        } catch (ClientException e) { 
   
            e.printStackTrace();
        }
        return false;
    }
}

3.5、contrlloer

package org.kang.aliyundxfw.contrlloer;

import io.netty.util.internal.StringUtil;
import org.kang.aliyundxfw.model.SendSms;
import org.kang.aliyundxfw.service.SendSmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.TimeUnit;

/** * @author 康康 * @create 2021-10-30 15:16 * @explain */
@RestController
@CrossOrigin //跨域支持
public class SendSmsContrlloer { 
   

    @Autowired
    private SendSmsService sendSmsService;

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @GetMapping("/send")
    public String code(SendSms sendSms) { 
   
        //根据手机号到redis里面查看有没有这个手机号
        String code = redisTemplate.opsForValue().get(sendSms.getPhoneNumbers());
        if (!StringUtil.isNullOrEmpty(code)) { 
   
            return sendSms.getPhoneNumbers() + ":" + sendSms.getCode() + "已存在,还没有过期";
        }

        //随机生成四位数的验证码
        code = UUID.randomUUID().toString().substring(0, 4);
        Map<String,Object> map=new HashMap<>();
        map.put("code",code);
        sendSms.setCode(map);
        //调用Service的方法
        boolean isSend = sendSmsService.send(sendSms);
        if(isSend){ 
   
            //成功就把手机号放到redis里面 设置5分钟过期
            redisTemplate.opsForValue().set(sendSms.getPhoneNumbers(),code,5, TimeUnit.SECONDS);
            return sendSms.getPhoneNumbers() + ":" + sendSms.getCode() + "发送成功";
        }else { 
   
            return "发送失败";
        }
    }

}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219118.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql 联合索引生效的条件、索引失效的条件

    mysql 联合索引生效的条件、索引失效的条件

    2022年2月17日
    60
  • SSM项目总结

    SSM项目总结SSM项目总结(基于Maven工程)1、如何访问WEB-INF下的页面2、AJAX接收不到return的值3、AJAX内跳转页面4、form表单提交数据5、将登录用户信息存在session中6、将session中数据销毁7、MD5加密8、生成指定位数的随机数9、拦截器10、c:forEach11、分页查询12、onclick事件1、如何访问WEB-INF下的页面<%request.getRequestDispatcher(“/WEB-INF/views/home/login1.jsp”).f

    2022年6月28日
    26
  • Ubuntu安装GCC5/7/9/10/11「建议收藏」

    Ubuntu安装GCC5/7/9/10/11「建议收藏」为了使用C++14/17的新特性,我们难免要升级下自己的GCC版本,同时还要保证自己新安装的GCC生效,并且和原GCC共存。安装GCC-5.0sudoadd-apt-repositoryppa:ubuntu-toolchain-r/testsudoapt-getupdatesudoapt-getinstallgcc-5g++-5sudoupdate-alte…

    2022年7月24日
    25
  • 大数据数据分析架构探究

    大数据数据分析架构探究

    2021年7月5日
    81
  • CEGUI渲染概论

    CEGUI渲染概论
    1、几个重要的类
    Direct3D9Renderer负责CEGUI的Render的接口
    RenderingSurface渲染接口类
    RenderingWindow可渲染窗口
    RenderTarget的继承关系相关类。
    Direct3D9GeometryBuffer类
    其方法
     voiddraw()const;//渲染
       voidsetTranslation(constVector3&t);

    2022年7月23日
    21
  • 浅析Java中float和double

    浅析Java中float和double需要注意的是 java 中小数默认为 double 类型的 如果想要使用 float 类型的 则需要在小数后面加 f 例如 floata 3 14f 不带符号的话 最小值 Float MIN VALUE 1 4E 45 2 的 149 次方 最小值 Double MIN VALUE 4 9E 324 2 的 1074 次方 最大值 Float MAX VALUE 3 E38 2 的 128 次方 1 最大

    2025年6月14日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号