开通阿里云短信服务

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


相关推荐

  • 最新PHP 面试、笔试题汇总(code happy)[通俗易懂]

    最新PHP 面试、笔试题汇总(code happy)[通俗易懂]一、秒杀(商品超卖,高并发,同一用户多次抢购) 后端:redis+队列 redis队列实现,三个队列(库存队列,排队队列,抢购结果队列) 用户先进入排队队列,先进先出,判断是否已经在抢购结果队列,如果在,则直接下一个,如果不在,将用户信息加入抢购结果队列,库存-1,等待数据库空闲时,将抢购结果写入数据库 前端: 面对高并发的抢购活动,前端常用的三板斧是【扩容】【静态化】【限流】 扩容:加机器,这是最简单的方法,通过增加前端池的整体承载量来抗峰值。 静态化:将活动页面上的所有可以静态的

    2022年6月1日
    34
  • MQTT服务器搭建与测试图文并茂[通俗易懂]

    MQTT服务器搭建与测试图文并茂[通俗易懂]文章目录一、MQTT概念二、阿里云MQTT服务器搭建1阿里云平台注册及认证2添加平台2创建产品与设备获取MQTT连接相关信息三、MQTT.fx测试1MQTT.fx下载及安装2配置登录信息3从MQTT.fx上报数据到阿里云服务器4阿里云下发数据到MQTT.fx将属性set填入一、MQTT概念MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的”轻量级”通讯协议,该

    2022年5月2日
    56
  • 1MB,1GB,1TB等于多少字节或比特?(理解B与b的区别)「建议收藏」

    1MB,1GB,1TB等于多少字节或比特?(理解B与b的区别)「建议收藏」首先,数据量最小单位比特,bit,(b)即一个比特位为0或1;然后,一个字节,Byte(B)等于8个比特位;1B=8bit.与字节搭配时,K,M,G,T为二进制单位,因为1000与1024相近,即2^10=1K;所以:1KB=1024Byte,所以1MB=10241024=1048576字节1MB=1024KB1GB=1024MB1TB=1024GB与比特搭配时,K,M,…

    2022年5月25日
    75
  • python-操作文件以及文件夹

    python-操作文件以及文件夹

    2021年5月17日
    116
  • 04 能臣之路

    04 能臣之路在上一集我们讲到当时的最有名的人物鉴赏家和品评家许劭,对曹操又一个评价,就说你是治世之能臣,乱世之奸雄。这句话可以有两种解释,一种是处在治世就是能臣,处在乱世就是奸雄;第二种解释,你治理天下就是能臣,扰乱天下就是奸雄。那么曹操到底是做能臣还是做奸雄呢?其实曹操原本是想做能臣的。   公元174年,二十岁的曹操被举为孝廉,担任郎官。孝就是孝子,廉就是廉士,一个人如果被举为孝廉,那么他就有了做官的资

    2022年5月27日
    32
  • HTML+CSS登录界面[通俗易懂]

    HTML+CSS登录界面[通俗易懂]今天学习了一个HTML+CSS登录界面效果图如下:背景图片可以选取自己喜欢的,以下是实现代码:login.html<!DOCTYPEhtml><html><head><metacharset=”UTF-8″><title>登录</title><linkrel=”stylesheet”…

    2022年6月1日
    35

发表回复

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

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