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/Dysmsapiconfig.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.htmlcom.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) {// 错误 messageSystem.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);// 错误 messageSystem.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随机数,少位数前面补0int 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) {// 错误 messageSystem.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);// 错误 messageSystem.out.println(error.getMessage());// 诊断地址System.out.println(error.getData().get("Recommend"));com.aliyun.teautil.Common.assertAsString(error.message);}}
}

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

N体问题-MATLAB 中的数值模拟

一、说明 万有引力是宇宙普适真理&#xff0c;当计算两个物体的引力、质量、距离的关系是经典万有引力物理定律&#xff0c;然而面向复杂问题&#xff0c;比如出现三个以上物体的相互作用&#xff0c;随时间的运动力学&#xff0c;这种数学模型将是更高级的思维方法。本文将阐述…

gin使用自签名SSL证书与自签名证书不受信任方法解决

文章目录 1. X.509 V3证书介绍2、使用openssl生成自签名证书和解决不受信任问题2.1、生成根证书2.2、为域名生成证书申请文件2.3、为域名创建证书的扩展描述文件2.4、为域名创建证书 3、Go应用中使用自签名证书3.1、gin框架调用实现3.2、运行效果 4、使用java的bouncycastle生成…

比较好的python书籍,python有什么书推荐

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;比较好的python书籍&#xff0c;python有什么书推荐&#xff0c;现在让我们一起来看看吧&#xff01; 我是在半年前接触到Python的&#xff0c;我之前没有一点编程基础&#xff0c;但在我自学的这半年里&#xff0c;我发…

Saas 中 用默认的值,不初始化给商户值,sql 查询 group by中,指定字段 倒序

在saas 项目中&#xff0c;有些商户没有设定某些值&#xff0c;则用系统默认的值&#xff0c;不需要初始化给商户 SELECT * FROM app_public_config WHERE (name, merchant_id) IN (SELECT name, MAX(merchant_id)FROM app_public_configGROUP BY name ) and merchant_id IN …

vue3 后台返回的接口数据,下载图片到本地

vue3 后台返回的接口数据&#xff0c;下载图片到本地 <el-table><el-table-column align"left" label"操作" min-width"240"><template #default"scope"><el-button icon"edit" type"primary&quo…

我的NPI项目之Android 安全系列 -- Android Strongbox 初识

从Android9(Pie)开始,Google强烈建议支持Strongbox. 具体描述如下: 一直到目前的Android14. 对应的内容也一并贴出来: 说人话就是Android开始通过独立于主SoC的单元进行密钥存储了。 通常&#xff0c;这样的单元就是我们通常称作的Secure Element&#xff08;SE&#xff09;&am…

高效备份与大数据分析:揭秘亚马逊云科技海外服务器强大能力

首先&#xff0c;让我们先来了解一下云计算的基本概念。云计算是一种基于互联网的计算模式&#xff0c;通过将计算资源、存储空间和应用程序提供给用户&#xff0c;实现按需使用和付费的方式。依托于众多出彩的海外服务器产品我们可以获得这一体验。云计算能够极大地简化用户的…

OpenCV-Python:DevCloud CodeLab介绍及学习

1.Opencv-Python演示环境 windows10 X64 企业版系统python 3.6.5 X64OpenCV-Python 3.4.2.16本地PyCharm IDE线上注册intel账号&#xff0c;使用DevCloud CodeLab 平台 2.DevCloud CodeLab是什么&#xff1f; DevCloud是一个基于云端的开发平台&#xff0c;提供了强大的计算…

UE5 C++(二)— 游戏架构介绍

架构关系如下&#xff1a; 这里只简单描述下&#xff0c;具体的查看官方文档 AGameMode: AGameMode 是 AGameModeBase 的子类&#xff0c;拥有一些额外的功能支持多人游戏和旧行为。 所有新建项目默认使用 AGameModeBase。 如果需要此额外行为&#xff0c;可切换到从 AGameM…

二、Java基础语法

day02 - Java基础语法 1. 注释 ​ 注释是对代码的解释和说明文字。 Java中的注释分为三种&#xff1a; 单行注释&#xff1a; // 这是单行注释文字多行注释&#xff1a; /* 这是多行注释文字 这是多行注释文字 这是多行注释文字 */ 注意&#xff1a;多行注释不能嵌套使用…

docker-harbor 私有仓库

docker 镜像 容器 仓库 仓库&#xff1a;保存镜像 私有&#xff0c;自定义用户的形式登录仓库&#xff0c;拉取或者上传镜像。&#xff08;内部隔离的用户&#xff09; harbor&#xff1a;是VMware公司开发的&#xff0c;开源的企业级的docker registry项目。 帮助用户快速…

【刷题笔记】N皇后||回溯||符合思维方式

N皇后II 1 题目详情 n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回 n 皇后问题 不同的解决方案的数量。 https://leetcode.cn/problems/n-queens-ii/ 2 分析 刚一开始的时候我认…

由@EnableWebMvc注解引发的Jackson解析异常

同事合了代码到开发分支&#xff0c;并没有涉及到改动的类却报错。错误信息如下&#xff1a; Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.conv…

【Python机器学习系列】一文讲透机器学习中的K折交叉验证(源码)

一、简介 前面我详细介绍了关于机器学习的归一化和反归一化以及表格数据在机器学习中的输入格式问题&#xff1a; 一文彻底搞懂机器学习中的归一化与反归一化问题 【Python机器学习系列】一文彻底搞懂机器学习中表格数据的输入形式&#xff08;理论源码&#xff09; 本文将介绍…

Mysql workbench

下载地址: https://download.csdn.net/download/a876106354/88616595

Numpy: 修改numpy的dtype

要修改NumPy数组的dtype&#xff0c;可以使用astype()方法。这个方法将创建一个新的数组&#xff0c;其数据类型&#xff08;dtype&#xff09;由参数指定。 下面是一个例子&#xff0c;展示如何将一个NumPy数组的dtype从int64修改为float32: import numpy as np# 创建一个in…

进程概念【linux】

进程基础 在学习进程之前&#xff0c;首先要有一定的计算机硬件和软件基础。 硬件基础&#xff1a;冯诺依曼体系结构 如图&#xff0c;是计算机在硬件上的体系结构。 下面举出一些常见的输入输出设备&#xff08;有些设备只作输出设备&#xff0c;或者只作输入设备&#xff…

LLM之Prompt(三)| XoT:使用强化学习和蒙特卡罗树搜索将外部知识注入Prompt中,性能超过CoT,ToT和GoT

​论文地址&#xff1a;https://arxiv.org/pdf/2311.04254.pdf 一、当前Prompt技术的局限性 LLM使用自然语言Prompt可以将复杂的问题分解为更易于管理的“thought”可以回复用户的问题。然而&#xff0c;大多数现有的Prompt技术都有局限性&#xff1a; 输入输出&#xff08;I…

【QT 5 调试软件+Linux下调用脚本shell-经验总结+初步调试+基础样例】

【QT 5 调试软件Linux下调用脚本shell-经验总结初步调试基础样例】 1、前言2、实验环境3、自我总结4、实验过程&#xff08;1&#xff09;准备工作-脚本1&#xff09;、准备工作-编写运行脚本文件2&#xff09;、给权限3&#xff09;、运行脚本 &#xff08;2&#xff09;进入q…

pytorch一致数据增强

分割任务对 image 做&#xff08;某些&#xff09;transform 时&#xff0c;要对 label&#xff08;segmentation mask&#xff09;也做对应的 transform&#xff0c;如 Resize、RandomRotation 等。如果对 image、label 分别用 transform 处理一遍&#xff0c;则涉及随机操作的…