springboot集成阿里云短信服务

springboot集成阿里云短信服务

一.阿里云账号准备

流程:注册阿里云账号=>短信服务=>新增资质=>新建签名=>新建模版=>申请秘钥=>用代码测试

1.注册阿里云账号
2、登录成功后,
① 在首页搜索短信服务

image-20241230162236828

② 打开第一个搜索结果

image-20241230162323631③ 免费开通
image-20241230162349037
④ 可以根据提示立即更新个人/公司信息(即新增资质),也可以点击取消(根据个人需求选择,如果是自己玩,跳过即可。如果是项目集成,请立即补充,因为实际项目发短信必须要资质)

注:资质名称即短信 开头【】中的名称 :

image-20241230162449304
④ 新增资质:根据图中红框标识,查看申请说明(建议了解规则,避免新增资质失败)

image-20241230162539595

二、短信服务控制台

1、打开快速学习和测试

注:红框标识中的步骤必须完成!后两个步骤属于实际项目中的防护操作!
image-20241230162736870

2、申请秘钥

(1)点击头像,选择AccessKey 管理
image-20250102093947995
(2)如果没有账号,选择开始使用子用户(细化权限,互不影响使用)
① 使用AccessKey 管理

② 选择开始使用子用户

1》选择创建用户

image-20250102094704489

2》创建用户

image-20250102094606727

注意:名称格式为英文字母、数字、.、_或-。
3》 下载文件/获取秘钥信息

image-20250102094726748

注:可以从下载的CSV文件中获取,也可以直接复制AccessKey ID / AccessKey Secret
4》子用户管理
添加用户组:
用户组可能以项目为维度,比如用户组1为电商项目,用户组2为教培项目。
也可能以用户权限维度,比如用户组1,只能读,用户组2只能写。

添加用户权限:
具体到该用户有哪些权限:
总之按需选择,比如我们只需要短信,查找sms相关的选择即可:
image-20250102094807935

3、测试(推荐使用最后一种代码测试方法,方便理解)

① api测试:绑定手机号,选择测试模板(如果已申请短信模板,选择相应的模板测试即可),点击调用API发送短信,测试手机号收到短信!
image-20241230162941643

② 控制台测试(此种方式优先推荐测试):选择测试模板,模板选择验证码(通知类型经测试也是默认验证码短信内容,要想实现自定义效果,需要先申请模板),自行输入接收短信的手机号
image-20241230163141661

③ api调用测试:控制台测试中,有查看API demo 按钮,点击即可跳转

注:此种方式调用,需要准备好签名、短信模板才可以!
image-20241230163210010
④ 代码测试:选择sdk示例,根据需求选择相应开发语言代码的示例到本地,写个测试方法

注:此种方式调用,需要准备好签名、短信模板、秘钥才可以!
测试代码如下:

先引入依赖:

<dependency><groupId>com.aliyun</groupId><artifactId>tea</artifactId><version>1.3.1</version></dependency><!-- 阿里云短信服务 SDK --><dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>3.1.0</version></dependency><!--         阿里云核心库--><dependency><groupId>com.aliyun</groupId><artifactId>tea-openapi</artifactId><version>0.3.4</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency><!-- SLF4J API --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.36</version></dependency><!-- Logback 实现 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.11</version></dependency>

代码:

package com.aliyun.sms;import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;public class AliyunSmsService {private final Client client;public AliyunSmsService(String accessKeyId, String accessKeySecret) throws Exception {Config config = new Config().setAccessKeyId(accessKeyId).setAccessKeySecret(accessKeySecret);this.client = new Client(config);}public SendSmsResponse sendSms(String phoneNumber, String signName, String templateCode, String templateParam) throws Exception {SendSmsRequest request = new SendSmsRequest().setPhoneNumbers(phoneNumber).setSignName(signName).setTemplateCode(templateCode).setTemplateParam(templateParam);return client.sendSms(request);}public static void main(String[] args) {try {// 替换为你的 AccessKeyId 和 AccessKeySecretString accessKeyId = "换成你的AccessKeyId";String accessKeySecret = "换成你的AccessKeySecret";AliyunSmsService smsService = new AliyunSmsService(accessKeyId, accessKeySecret);// 替换为实际的手机号码、签名名称、模板代码和模板参数String phoneNumber = "要给谁发就替换为谁的电话号码";String signName = "新提醒";String templateCode = "SMS_476140185";  // 确保模板代码正确String templateParam = "{\"code\":\"1111\"}";SendSmsResponse response = smsService.sendSms(phoneNumber, signName, templateCode, templateParam);
//            System.out.println(JSON.toJSONString(response));} catch (TeaException e) {System.err.println("TeaException: " + e.getMessage());} catch (Exception e) {System.err.println("Exception: " + e.getMessage());}}
}

我使用的是代码测试,简单方便且容易看懂.

eaException: " + e.getMessage());
} catch (Exception e) {
System.err.println("Exception: " + e.getMessage());
}
}
}


我使用的是代码测试,简单方便且容易看懂.

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

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

相关文章

试题转excel;word转excel;大风车excel(1.1更新)

最近更新了大风车excel1.1版本 主要优化在算法层面&#xff1a; 1.0版本试题解析的成功率为95%&#xff0c;现在1.1版本已经优化到解析成功率为99% 一、问题描述 一名教师朋友&#xff0c;偶尔会需要整理一些高质量的题目到excel中 以往都是手动复制搬运&#xff0c;几百道…

python实现自动登录12306抢票 -- selenium

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 python实现自动登录12306抢票 -- selenium 前言其实网上也出现了很多12306的代码&#xff0c;但是都不是最新的&#xff0c;我也是从网上找别人的帖子&#xff0c;看B站视频&…

机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型

机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型 目录 机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型1 过拟合和欠拟合1.1 过拟合1.2 欠拟合 2 正则化惩罚2.1 概念2.2 函数2.3 正则化种类 3 K折交叉验证3.1 概念3.2 图片理解3.3 函数导入3.4 参数理解 4 训练模型K折交…

文件本地和OSS上传

这里写目录标题 前端传出文件后端本地存储阿里云OSS存储上传Demo实现上传ConfigurationProperties 前端传出文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>上传文件</title> </head&g…

《Vue3实战教程》37:Vue3生产部署

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 生产部署​ 开发环境 vs. 生产环境​ 在开发过程中&#xff0c;Vue 提供了许多功能来提升开发体验&#xff1a; 对常见错误和隐患的警告对组件 props / 自定义事件的校验响应性调试钩子开发工具集成 然而&#xff…

python制作打字小游戏

import pygame # 导入游戏模块 安装pygame import sys # 导入系统指令模块 import random # 导入随机数模块 pygame.init() #初始化游戏环境 wndpygame.display.set_mode((800,565)) #指定窗口大小 pygame.mixer.music.load(素材/SurvivalGame.mp3) #素…

抖音短视频矩阵系统源码开发全流程解析

在项目开发过程中&#xff0c;调整配置文件至关重要&#xff0c;这些文件包括数据库连接、API密钥及全局参数等。通过正确配置这些信息&#xff0c;可确保应用程序的稳定性和安全性。灵活调整配置以适应具体需求有助于短视频矩阵系统项目的顺利推进。 在开发环境中&#xff0c…

前端路由layout布局处理以及菜单交互(三)

上篇介绍了前端项目部署以及基本依赖的应用&#xff0c;这次主要对于路由以及布局进行模块化处理 一、 创建layout模块 1、新建src/layout/index.vue <template><el-container class"common-layout"><!-- <el-aside class"aside">&l…

戴尔/Dell 电脑按什么快捷键可以进入 Bios 设置界面?

BIOS&#xff08;基本输入输出系统&#xff09;是计算机硬件与操作系统之间的桥梁&#xff0c;它负责初始化和测试系统硬件组件&#xff0c;并加载启动操作系统。在某些情况下&#xff0c;如调整启动顺序、更改系统时间或日期、修改硬件配置等&#xff0c;您可能需要进入BIOS进…

《从入门到精通:蓝桥杯编程大赛知识点全攻略》(一)-递归实现指数型枚举、递归实现排列型枚举

本篇博客将聚焦于通过递归来实现两种经典的枚举方法&#xff1a;指数型枚举和排列型枚举。这两种枚举方式在计算机科学和算法竞赛中都有广泛应用&#xff0c;无论是在解题中&#xff0c;还是在实际工作中都极具价值。 目录 前言 斐波那契数列递归 递归实现指数型枚举 算法思…

idea 的 springboot项目spring-boot-devtools 自动编译 配置热部署

1&#xff0c;设置一 2&#xff0c;设置二 设置二&#xff08;旧版本&#xff09; CtrlShiftAlt/ 点击弹出框中Registry... 引入&#xff08;如果报错&#xff0c;换不同的版本&#xff09; <dependency><groupId>org.springframework.boot</groupId><a…

低代码开发:开启企业数智化转型“快捷键”

一、低代码开发浪潮来袭&#xff0c;企业转型正当时 在当今数字化飞速发展的时代&#xff0c;低代码开发已如汹涌浪潮&#xff0c;席卷全球。从国际市场来看&#xff0c;诸多企业巨头纷纷布局低代码领域&#xff0c;像微软的 PowerApps、OutSystems 等平台&#xff0c;凭借强大…

C#二维数组详解

目录 1&#xff0c;什么是二维数组&#xff1f; 2&#xff0c;创建二维数组的几种方式 &#xff08;1&#xff09;使用[,]声明数组&#xff08;常见方式&#xff09; &#xff08;2&#xff09;声明数组时指定元素 &#xff08;3&#xff09;使用new创建数组 &#xff08;…

STM32--超声波模块(HC—SR04)(标准库+HAL库)

一、HC-SR04工作原理 1&#xff09;采用IO触发测距&#xff0c;给至少10us的高电平信号。 2&#xff09;模块自动发送8个40KHz的方波&#xff0c;自动检测是否有信号返回。 3&#xff09;有信号返回&#xff0c;通过IO输出一高电平&#xff0c;高电平持续时间就是超声波从发…

DDD(一)—— Authentication with JWT

文章目录 项目地址一、项目结构梳理1.1 Domain层1.1.1 Entities文件夹1.2 Contracts层1.2.1 Authentication文件夹1.3 Appliaction层1.3.1Common文件夹1. Interfaces文件夹Authentication 权限接口Persistence 数据库接口Services 常用服务接口1.3.2 Services文件夹1. Authenti…

GPU 进阶笔记(一):高性能 GPU 服务器硬件拓扑与集群组网

记录一些平时接触到的 GPU 知识。由于是笔记而非教程&#xff0c;因此内容不求连贯&#xff0c;有基础的同学可作查漏补缺之用 1 术语与基础 1.1 PCIe 交换芯片1.2 NVLink 定义演进&#xff1a;1/2/3/4 代监控1.3 NVSwitch1.4 NVLink Switch1.5 HBM (High Bandwidth Memory) 由…

自由学习记录(31)

Java连接MySQL 找到那个关键jar包然后导入选中&#xff0c;就配置好MySQL的JDBC&#xff08;Java Database Connectivity&#xff09;了 菜单--文件--项目结构 项目设置--模块--选择要附着的项目--选择依赖--选中模块源--选中加号添加jar包 解压之后在里面可以看到这个最关键…

第十四届蓝桥杯Scratch省赛中级组—智能计价器

智能计价器 背景信息&#xff1a; A城市的出租车计价&#xff1a;3公里以内13元&#xff0c;基本单价每公里2.3元(超过3公里的部分&#xff0c;不满1公里按照1公里收费&#xff09;&#xff0c;燃油附加费每运次1元。 例如&#xff1a; 3.2公里的打车费用&#xff1a;132.3…

游戏引擎学习第69天

回顾碰撞响应时我们停留的位置 从昨天的讨论开始&#xff0c;我们正准备处理碰撞响应的复杂性。具体来说&#xff0c;我们讨论的是&#xff0c;当两个实体在屏幕上发生碰撞时&#xff0c;如何回应这种情况。碰撞本身并不复杂&#xff0c;但要处理其后的反应和规则则更具挑战性…

全新免押租赁系统助力商品流通高效安全

内容概要 全新免押租赁系统的推出&#xff0c;可以说是一场商品流通领域的小革命。想象一下&#xff0c;不再为押金烦恼&#xff0c;用户只需通过一个简单的信用评估&#xff0c;就能快速租到所需商品&#xff0c;这种体验简直令人惊喜&#xff01;这个系统利用代扣支付技术&a…