开通阿里云短信服务

开通阿里云短信服务阿里云短信服务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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pytorch(一) Pytorch 的安装[通俗易懂]

    Pytorch(一) Pytorch 的安装[通俗易懂]安装步骤1.检查是否有合适的GPU,若有安装Cuda与CuDNN2.下载pytorch安装文件,进行pytorch的安装检查电脑是否有合适的GPU在桌面上右击如果能找到NVIDA控制面板,则说明该电脑有GPU。控制面板如下,并通过查看系统信息获取支持的Cuda版本点击帮助->点击系统信息弹出下面的对话框,在驱动程序版本那一栏就能看到该计算机使用的驱动版本。…

    2022年6月24日
  • draggable的用法_draggable

    draggable的用法_draggable一、概述通过前面几节学习,大家应该都知道了,一个div对象是可以通过拖拉来改变大小,也可以通过拖动来改变其位置的。如何改变大小已经讲解过了,那么怎么实现拖动改变位置呢?现在就开始讲解如何实现拖动-

    2022年8月6日
  • Docker(三)- 从镜像运行启动容器「建议收藏」

    Docker(三)- 从镜像运行启动容器「建议收藏」文章目录从镜像运行启动容器容器启动后运行的命令`ENTRYPOINT`和`CMD`启动容器时覆盖`ENTRYPOINT`和`CMD“-d`后台运行`dockerexec`进入容器,运行指定命令`–name`和`–restart=always“–rm`和`dockercp`从镜像运行启动容器从一个镜像可以运行启动一个或多个容器。所谓容器,我们可以理解为是一个虚拟的计算机,其中运行着操作系统,操作系统中运行着我们部署的应用。从tomcat镜像启动容器:do

    2022年9月2日
  • SpringBoot面试题及答案整理

    SpringBoot面试题及答案整理什么是SpringBootSpringBoot建立spring框架之上,使用spring启动,帮我们避免了大量的配置。因此,SpringBoot可以帮助我们以最少的工作量,更加健壮地使用现有的Spring功能。SpringBoot有哪些优点?1、减少开发,测试时间和努力。2、使用JavaConfig有助于避免使用XML。3、避免大量的Maven导入和各种版本冲突。4、提供意见发展方法。5、通过提供默认值快速开始开发。6、没有单独的Web服

    2022年5月11日
  • mac安装navicat 激活码【中文破解版】

    (mac安装navicat 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1STL5S9V8F-eyJsaWN…

    2022年3月27日
  • namecheap 域名服务商,每次登录都需要验证码

    namecheap 域名服务商,每次登录都需要验证码

    2022年2月18日

发表回复

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

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