Springboot整合阿里云短信服务

目录

1.注册登录用户

2.点击AccessKey管理,开通使用子用户AccessKey

2.1点击进入AccessKey管理

2.2点击用户创建用户

2.3选择控制台创建

2.4权限修改

3.短信服务

4.创建Springboot项目使用SDK

4.1创建一个springboot项目

4.2导入阿里云短信Maven依赖

4.3直接导入阿里云的测试代码

4.4说明

4.5直接测试

5.简单的接口发送验证码


来都来了点个赞在走呗🌹🌹🌹🌹🌹🌹🌹🌹


阿里云的官网地址为阿里云-计算,为了无法计算的价值

1.注册登录用户

        这个地方注册用户应该就不需要过多的介绍了看一眼手机号注册也考研用支付宝淘宝扫描登录

2.点击AccessKey管理,开通使用子用户AccessKey

2.1点击进入AccessKey管理

2.2点击用户创建用户

2.3选择控制台创建

必须要选择控制台创建,其他的可以自己根据自己的喜好设定这都是没有问题的。

2.4权限修改

点击添加权限

这个地方我选择的是下面这些,因为想着偷一下懒所以选择了管理所有资源的权限

AliyunDysmsFullAccess

管理短信服务(SMS)的权限

AliyunDysmsReadOnlyAccess

只读访问短信服务(SMS)的权限

AdministratorAccess

管理所有阿里云资源的权限

AliyunOSSFullAccess

管理对象存储服务(OSS)权限

3.短信服务

开启短信服务

点击产品-->企业服务和云通信-->短信服务

 点击免费开通

按照自己想不想要完成新手测试使用

变量格式:${code};例如:您的验证码为 ${code} ,该验证码5分钟内有效,请勿泄露于他人。

4.创建Springboot项目使用SDK

以下是阿里云的短信服务的SDK官方文档地址:短信服务_SDK中心-阿里云OpenAPI开发者门户 (aliyun.com)

4.1创建一个springboot项目

选择一个springbootweb的依赖就可以了,因为后面我会用到springbootweb去做测试

4.2导入阿里云短信Maven依赖

Maven依赖:

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>dysmsapi20170525</artifactId>
  <version>2.0.24</version>
</dependency>

4.3直接导入阿里云的测试代码

// This file is auto-generated, don't edit it. Thanks.
package com.ltx.messageservice;

import com.aliyun.tea.*;

public class Sample {

    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填,您的 AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 必填,您的 AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
        config.endpoint = "dysmsapi.aliyuncs.com";
        return new com.aliyun.dysmsapi20170525.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        // 请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取 AccessKey 的方式进行调用,仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html
        com.aliyun.dysmsapi20170525.Client client = Sample.createClient(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
                .setSignName("阿里云短信测试")
                .setTemplateCode("SMS_154950909")
                .setPhoneNumbers("183902xxxxx")//手机号写自己的
                .setTemplateParam("{\"code\":\"1234\"}");
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // 复制代码运行请自行打印 API 的返回值
            client.sendSmsWithOptions(sendSmsRequest, runtime);
        } catch (TeaException error) {
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }        
    }
}

4.4说明

上面的代码我们使用的是阿里云提供的短信发送模板,要是你想自定义模板也是可以的,你只需要去在快速入门那个地方看一下就可以自定义自己的专属模板了。

然后要注意到是,项目两个acceesskeyid和密码需要替换成你自己的

setAccessKeyId(accessKeyId)
setAccessKeySecret(accessKeySecret)

 手机号也直接改成自己的就🆗啦

4.5直接测试

运行此主函数你的手机号就会收到如下短信

这个地方我们注意到的是验证码为什么是1234,因为我们在模板中定义的code替换使用的是1234,所以我们后续就要队这个地方进行一个随机的六位数字生成就可以了,然后把生成的六位数替换掉之前的1234.

5.简单的接口发送验证码

上面的代码中的createClient直接当成创建短信服务的客服端就可以了,我们只需要从前端获取用户手机号码,然后发送给对应手机号码短信就🆗啦。

package com.ltx.messageservice;

import com.aliyun.tea.TeaException;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Random;

@RestController
public class messageTest {

    @RequestMapping("/send/{phone}")
    public void send (@PathVariable("phone") String phone) throws Exception {
        com.aliyun.dysmsapi20170525.Client client = Sample.createClient(null,null);
        //生成0-100000随机数,少位数前面补0
        int RandomNum = new Random().nextInt(100000);
        String sixDigitNum = String.format("%06d", RandomNum);
        com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
                .setSignName("阿里云短信测试")
                .setTemplateCode("SMS_154950909")
                .setPhoneNumbers(phone)
                .setTemplateParam("{\"code\":\""+sixDigitNum+"\"}");
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // 复制代码运行请自行打印 API 的返回值
            client.sendSmsWithOptions(sendSmsRequest, runtime);
        } catch (TeaException error) {
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
    }
}

当前我们启动springboot的主启动类,然后再浏览器中输入localhost:8080/send/你的手机号

一秒不到的时间你的手机应该就会收到短信

在真正的实战中短信服务一般都是有一个过期时间的,这个过期时间我们可以通过redis设置字段的存活时间,最后判断验证码是否正确的时候从redis中取出对应手机号的验证码即可。这个地方我就补示范了大家可以自己去尝试一下~~~~~~~~~~~ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/243976.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

唇彩行业分析:我国彩妆细分品类市场占比63%

唇部彩妆是指在唇部起到化妆修饰作用的产品&#xff0c;包括口红/唇膏、唇蜜/唇彩/唇釉、唇笔/唇线笔、唇泥四大类。总体来看&#xff0c;目前我国唇部彩妆细分品类主要集中在唇膏/口红、唇蜜/唇彩/唇釉。唇笔/唇线笔市场接受程度较低&#xff0c;这是由于唇笔/唇线笔的主要成分…

shell脚本定时自动备份mysql数据库和mysql恢复数据

1、设置一些测试的数据 创建一个database&#xff0c;一些tables和一些数据 create database test_bom default charset utf8 collate utf8_general_ci; use test_bom;create table users( id int not null primary key auto_increment, name varchar(64) not null, password…

通俗易懂:插入排序算法全解析(C++)

插入排序算法是一种简单直观的排序算法&#xff0c;它的原理就像我们玩扑克牌时整理手中的牌一样。下面我将用通俗易懂的方式来解释插入排序算法的工作原理。 假设我们手上有一副无序的扑克牌&#xff0c;我们的目标是将它们从小到大排列起来。插入排序算法的思想是&#xff0…

web实习三_JavaScript编程

编写 JavaScript 程序实现 输出“九九乘法表”&#xff08; 左下三角形形式 &#xff09;。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …

qiankun中子系统变化透传到主系统调用主系统方法

1、首先在主系统中qiankun启动前把变动的参数初始化 2、初始化之后就可以通过全局状态通信把参数透传为全局 3、在微应用子系统main.js的qiankun的mount中获取到全局设备参数属性并是设置为子系统全局 4、在微应用子系统中需要去调主系统方法时就在那个地方改变透传过来的参数 …

如何性能测试中进行业务验证?

在性能测试过程中&#xff0c;验证HTTP code和响应业务code码是比较基础的&#xff0c;但是在一些业务中&#xff0c;这些参数并不能保证接口正常响应了&#xff0c;很可能返回了错误信息&#xff0c;所以这个时候对接口进行业务验证就尤其重要。下面分享一个对某个资源进行业务…

ros2+在Ubuntu上安装gazebo

Binary Installation on Ubuntu(Ubuntu上binary方式安装gazebo) Harmonic binaries are provided for Ubuntu Jammy (22.04) and Ubuntu 24.04 (when its released). &#xff08;在Ubuntu22.04或者24.04上都是安装Harmonic版本的gazebo&#xff09;The Harmonic binaries are…

issue unit

The Issue Unit issue queue用来hold住&#xff0c;已经dispatched&#xff0c;但是还没有执行的uops&#xff1b; 当一条uop的所有的operands已经ready之后&#xff0c;request请求会被拉起来&#xff1b;然后issue select logic将会从request bit 1的slot中&#xff0c;选择…

指令寻址(顺序寻址和跳跃寻址)

目录 一. 顺序寻址1.1 定长指令字结构1.2 变长指令字结构 二. 跳跃寻址 \quad 指令寻址:如何确定下一条指令的存放地址? \quad 一. 顺序寻址 \quad 1.1 定长指令字结构 \quad 主存按字编址 \quad 按字节编址 1.2 变长指令字结构 \quad 同种颜色代表一条指令 由于无法判断当前…

制衣厂生产ERP系统怎么样?制衣厂生产ERP软件哪个好

有很多的制衣厂在订单处理、物料、仓储、销售、仓储、物料编码、车间成本核算、计件工资核算等方面还存在不少改进空间。 而经过多年的发展&#xff0c;现如今制衣行业的竞争比较激烈&#xff0c;如何提升各业务部门协同效率&#xff0c;减少车间物料损耗&#xff0c;简化生产…

idea的快捷键

1.调整字体的大小 文件夹的循序:setting-Editor-Font 界面: 2.删除当前行 文件夹的循序:setting-Keymap-DeleteLine 界面: 3.导入该行需要的类 文件夹的循序:setting-Editor-General-Auto import 界面: 4.格式化代码 文件夹的循序:setting-keymap-Reformat 界面: 5.快速…

【MySQL】——数据类型及字符集

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

loki 如何格式化日志

部署 grafana-loki 首先介绍一下如何部署 官方文档&#xff1a;部署 grafana-loki 部署命令 设置集群的存储类&#xff0c;如果有默认可以不设置设置命名空间 helm install loki oci://registry-1.docker.io/bitnamicharts/grafana-loki --set global.storageClasslocal -n …

程序员退一步的海阔天空,是考公还是烤冷面?

打败一个志向坚定的程序员只需要一个简单的年龄危机、身体预警.......钱难挣、屎难吃。996的钱更是伤身体&#xff0c;或者是被裁员、劝退的无力。算了~这份工作也不是非要不可&#xff0c;劳资不干了&#xff01;&#xff08;hahahahaha....bushi)人生在世&#xff0c;进可攻、…

Soul 推出“SoulX”AI人工智能模型,已应用于旗下 App“苟蛋”AI聊天机器人

Soul社交平台最近发布了名为”SoulX“的AI人工智能模型&#xff0c;SoulX将作为Soul “AIGC社交”布局的重要基建&#xff0c;具备prompt驱动、条件可控生成、上下文理解、多模态理解等能力&#xff0c;垂直应用于平台上多元社交互动场景&#xff0c;如智能对话机器人、AI辅助聊…

模拟微信、QQ、支付宝那样的随机红包

随机拆分给定金额为给定个数红包&#xff0c;像微信、QQ、支付宝随机红包那种&#xff0c;要求红包总金额绝对与给定金额相等。 (笔记模板由python脚本于2023年12月14日 12:37:58创建&#xff0c;本篇笔记适合熟悉Python随机数模块random的整型随机方法randint&#xff0c;能熟…

卫浴企业做网站的效果如何

卫浴产品无论工程还是家庭中都有较高需求度&#xff0c;相关品牌或经销商也不少&#xff0c;然而在实际经营中&#xff0c;卫浴品牌商家也面临着一些痛点&#xff1a; 1、品牌宣传拓客难 卫浴产品并不缺客户&#xff0c;但大小品牌众多&#xff0c;商家想要突围绝非易事&…

国产数据库适配-人大金仓(kingbase V8R3)

金仓数据库是基于POSTGRE_SQL 参考资料 国产数据库人大金仓踩坑记录和函数适配_金仓数据库关系不存在-CSDN博客 Springboot工程 适配人大金仓 kingbase V8R3 引入驱动包和方言包 hibernate-5.2.17.Finaldialect.jar kingbase8-8.2.0.jar application.yml文件 driver-cla…

计算机网络安全原理习题参考答案

1.9习题 一、单项选择题 1. ISO 7498-2从体系结构的角度描述了5种可选的安全服务&#xff0c;以下不属于这5种安全服务的是&#xff08;  D  &#xff09; A. 数据完整性   B. 身份鉴别   C. 授权控制   D. 数据报过滤 2. ISO 7498-2描述了8种特定的安全机制&…

破局创新,天翼云HBlock如何以小见大、以柔克刚?

引言&#xff1a;另辟蹊径开拓创新 不走传统存储厂商的“寻常路” 【全球存储观察 &#xff5c; 科技热点关注】 在分布式块存储领域&#xff0c;大部分厂商的安装软件套件大小都在GB级。然而&#xff0c;天翼云破天荒地将存储资源盘活系统HBlock的软件安装包浓缩到了170MB&a…