扩展------项目中集成阿里云短信服务
引言
在当今数字化时代,短信服务在各种项目中扮演着重要角色,如用户注册验证、订单通知、营销推广等。阿里云短信服务凭借其稳定、高效和丰富的功能,成为众多开发者和企业的首选。本文将详细介绍如何在项目中集成阿里云短信服务,帮助开发者快速上手并实现相关功能。
阿里云短信服务简介
-
服务特点
-
高送达率:依托阿里云强大的通信网络和优化算法,确保短信能够快速、准确地送达用户手机。
-
高并发处理能力:能够支持大规模的短信发送请求,满足企业级应用的需求。
-
丰富的功能:提供多种短信模板类型,支持变量替换,方便个性化定制短信内容。
-
安全可靠:采用多重安全防护机制,保障用户数据和隐私安全。
-
-
应用场景
-
用户注册与登录:发送验证码短信,实现用户身份验证。
-
订单通知:及时通知用户订单状态更新,如发货、配送、完成等。
-
营销推广:向用户发送促销活动、新品推荐等短信,提升用户活跃度和转化率。
-
其他通知:如账户余额提醒、系统公告等。
-
集成步骤
1、注册阿里云账号,开通短信服务

2、创建AccessKey ID和AccessKey Secret

3、创建模板、签名(可直接使用测试模板)

4、在项目中引入依赖
<dependency><groupId>com.aliyun</groupId><artifactId>alibabacloud-dysmsapi20170525</artifactId><version>3.0.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency>
5、创建工具类
import com.alibaba.fastjson.JSONObject;
import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.service.dysmsapi20170525.AsyncClient;
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsResponse;
import com.google.gson.Gson;
import darabonba.core.client.ClientOverrideConfiguration;
import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.concurrent.CompletableFuture;@Component
public class ALIMessageUtil {public static final String ALIBABA_CLOUD_ACCESS_KEY_ID = "";public static final String ALIBABA_CLOUD_ACCESS_KEY_SECRET = "";public static final String ALIBABA_CLOUD_REGION_ID = "cn-qingdao";public static final String ALIBABA_CLOUD_ENDPOINT = "dysmsapi.aliyuncs.com";public static final String ALIBABA_CLOUD_SIGNNAME = "阿里云短信测试";public static final String ALIBABA_CLOUD_TEMPLATE_CODE = "SMS_154950909";public static boolean sendMessage(String phone, Map<String, Object> params) {// 阿里云账号凭证配置StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder().accessKeyId(ALIBABA_CLOUD_ACCESS_KEY_ID).accessKeySecret(ALIBABA_CLOUD_ACCESS_KEY_SECRET).build());// 异步客户端AsyncClient client = AsyncClient.builder().region(ALIBABA_CLOUD_REGION_ID) // Region ID.credentialsProvider(provider).overrideConfiguration(ClientOverrideConfiguration.create().setEndpointOverride(ALIBABA_CLOUD_ENDPOINT)).build();// 发送API参数配置SendSmsRequest sendSmsRequest = SendSmsRequest.builder().signName(ALIBABA_CLOUD_SIGNNAME) //签名.templateCode(ALIBABA_CLOUD_TEMPLATE_CODE) //模板CODE.phoneNumbers(phone) //接收短信的手机号码.templateParam(JSONObject.toJSONString(params)) //短信内容.build();// 发送短信并且获得返回结果CompletableFuture<SendSmsResponse> response = client.sendSms(sendSmsRequest);try {SendSmsResponse resp = response.get();System.out.println(new Gson().toJson(resp.getBody()));return "OK".equals(resp.getBody().getCode());} catch (Exception e) {e.printStackTrace();} finally {//关闭客户端client.close();}return false;}
}
6、项目中使用即可(发送验证码)
@GetMapping("/getCode")@Operation(summary = "获取验证码")public void getCode(@RequestParam String Phone) {//随机生成六位数字验证码String code = String.valueOf((int) ((Math.random() * 9 + 1) * 100000));Map<String, Object> params = new HashMap<>();params.put("code", code);ALIMessageUtil.sendMessage(Phone, params);log.info(Phone+"-已发送短信:" + "验证码为: "+ code);//将验证码存在Redis中,并且5分钟内有效}
7、验证测试
![]()
相关文章:
扩展------项目中集成阿里云短信服务
引言 在当今数字化时代,短信服务在各种项目中扮演着重要角色,如用户注册验证、订单通知、营销推广等。阿里云短信服务凭借其稳定、高效和丰富的功能,成为众多开发者和企业的首选。本文将详细介绍如何在项目中集成阿里云短信服务,帮…...
MySQL面试篇——性能优化
MySQL性能优化 在MySQL中,如何定位慢查询 慢查询表象:页面加载过慢、接口压测响应时间过长(超过1s)。造成慢查询的原因通常有:聚合查询、多表查询、表数据量过大查询、深度分页查询 方案一:开源工具 调试工…...
Java EE 进阶:Spring MVC(2)
cookie和session的关系 两者都是在客户端和服务器中进行存储数据和传递信息的工具 cookie和session的区别 Cookie是客⼾端保存⽤⼾信息的⼀种机制. Session是服务器端保存⽤⼾信息的⼀种机制. Cookie和Session之间主要是通过SessionId关联起来的,SessionId是Co…...
ShardingSphere 和 Spring 的动态数据源切换机制的对比以及原理
ShardingSphere 与 Spring 动态数据源切换机制的对比及原理 一、核心定位对比 维度ShardingSphereSpring动态数据源(如 AbstractRoutingDataSource)定位分布式数据库中间件轻量级多数据源路由工具核心目标分库分表、读写分离、分布式事务多数据源动态切…...
基于Django的协同过滤算法养老新闻推荐系统的设计与实现
基于Django的协同过滤算法养老新闻推荐系统(可改成普通新闻推荐系统使用) 开发工具和实现技术 Pycharm,Python,Django框架,mysql8,navicat数据库管理工具,vue,spider爬虫࿰…...
AI视频生成工具清单(附网址与免费说明)
以下是一份详细的AI视频制作网站总结清单,包含免费/付费信息及核心功能说明: AI视频生成工具清单(附网址与免费说明) 1. Synthesia 网址:https://www.synthesia.io是否免费:免费试用(生成视频…...
JavaWeb学习——HTTP协议
HTTP 协议 什么是 HTTP 协议 HTTP(超文本传输协议,HyperText Transfer Protocol)是用于在客户端(如浏览器)和服务器之间传输超文本(如网页、图片、视频等)的应用层协议。它是现代互联网数据通…...
QP 问题(Quadratic Programming, 二次规划)
QP 问题(Quadratic Programming, 二次规划)是什么? QP(Quadratic Programming,二次规划)是一类优化问题,其中目标函数是二次型函数,约束条件可以是线性等式或不等式。 QP 问题是线…...
VSTO(C#)Excel开发2:Excel对象模型和基本操作
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
MySQL索引数据结构
目录 1 索引常用的数据结构 1.1 二叉树 1.2 平衡二叉树 1.3 红黑树 1.3 Hash表 1.4 B树 1.4 B树 2 MySQL索引的数据结构 2.1 MyISAM存储引擎索引 2.2 InnoDB存储引擎索引 2.2.1 聚集索引 2.2.2 非聚集索引 2.2.3 联合索引数 2.2.4 hash索引 1 索引常用的数据结构 1.1 二叉树 二…...
C 语 言 --- 数 组 (1)
C 语 言 --- 数 组1 数 组定义一维数组语 法 格 式初始化完 全 初 始 化不 完 全 初 始 化省 略 数 组 大 小不 初 始 化使 用 memset 初 始 化 类 型访 问 元 素一 维 数 组 在 内 存 中 的 存 储 总结 💻作 者 简 介:曾 与 你 一 样 迷 茫,…...
[视频编码]rkmpp 实现硬件编码
mpi_enc_test的命令参数描述说明 命令参数的描述说明如下: 命令参数 描述说明 -i 输入的图像文件。 -o 输出的码流文件。 -w 图像宽度,单位为像素。 -h 图像高度,单位为像素。 -hstride 垂直方向相邻两行之间的距离,单…...
3D数字化:家居行业转型升级的关键驱动力
在科技日新月异的今天,家居行业正经历着一场前所未有的变革。从传统的线下实体店铺到线上电商平台的兴起,再到如今3D数字化营销的广泛应用,消费者的购物体验正在发生翻天覆地的变化。3D数字化营销不仅让购物变得更加智能和便捷,还…...
网安知识点
1.SQL注入漏洞产生的原因是? 前端传到后端的数据,没有经过任何处理,直接当作sql语句的一部分来执行 2.讲一下sql注入,写入webshell需要哪些前提条件 开启导入导出权限secure-file-priv 站点根目录位置/路径 mysql用户对站点根目…...
天津大学02-深度解读DeepSeek:部署、使用、安全【文末附下载链接】
大模型风险与不当用例——价值观错位 大模型与人类价值观、期望之间的不一致而导致的安全问题,包含:• 社会偏见(Social Bias)LLM在生成文本时强化对特定社会群体的刻板印象,例如将穆斯林与恐怖主义关联,或…...
【kubernetes】service
目录 1. 说明2. 原理2.1 服务注册2.2 服务发现2.3 负载均衡 3. Service的类型3.1 ClusterIP3.2 NodePort3.3 LoadBalancer3.4 ExternalName 4. 使用场景 1. 说明 1.kubernetes中的service主要用于提供网络服务,并实现微服务架构中的几个核心功能:全自动…...
Python卷积神经网络(CNN)来识别和计数不同类型的工业零件
以下三种类型工业零件为例,使用卷积神经网络(CNN)来识别和计数不同类型的工业零件。以下是Python实现步骤: 数据准备:收集并标注包含不同形状(如方形、圆形、扇形)的工业零件图像数据集。 模型…...
MoonSharp 文档二
目录 6.Sharing objects 我们先来简单谈谈类型描述符 先说类型描述 稍微复杂一点 调用静态成员 应该使用 “:” 还是 “.” 重载 ByRef 参数(C# 中的 ref/out) 索引器 userdata 上的运算符和元方法 扩展方法 事件 关于 InteropAccessMode 的…...
android 支持自定义布局、线程安全、避免内存泄漏的 Toast 工具类
支持自定义布局:可以灵活地显示自定义样式的 Toast。 线程安全:确保在主线程中显示 Toast,避免崩溃。 避免内存泄漏:使用 ApplicationContext 和取消机制,防止内存泄漏问题。 工具类:作为一个通用的工具…...
景联文科技:以精准数据标注赋能AI进化,构筑智能时代数据基石
在人工智能技术席卷全球的浪潮中,高质量数据已成为驱动AI模型进化的核心燃料。作为全球领先的AI数据服务解决方案提供商,景联文科技深耕数据标注领域多年,以技术为基、以专业为本,致力于为全球客户提供全场景、高精度、多模态的数…...
StructBERT中文相似度模型GPU算力适配:显存占用峰值218MB,预留缓冲空间充足
StructBERT中文相似度模型GPU算力适配:显存占用峰值218MB,预留缓冲空间充足 1. 项目概述 StructBERT中文相似度计算工具是一个基于百度先进大模型技术的高精度语义匹配系统。这个工具能够智能分析两个中文句子之间的语义相似程度,为各类文本…...
Clawdbot汉化版实测:企业微信接入AI客服,响应速度提升92%
Clawdbot汉化版实测:企业微信接入AI客服,响应速度提升92% 1. 企业客服场景的痛点与解决方案 1.1 传统客服面临的挑战 在电商和客户服务领域,企业微信已成为重要的客户沟通渠道。然而传统客服模式存在三个核心问题: 响应延迟&a…...
LiuJuan20260223Zimage镜像解析:ComfyUI可视化工作流搭建指南
LiuJuan20260223Zimage镜像解析:ComfyUI可视化工作流搭建指南 你是不是也对那些炫酷的AI图片生成感到好奇,但一看到复杂的代码和命令行就头疼?或者,你已经尝试过一些基础的AI工具,但总觉得它们的功能太单一࿰…...
Pixel Dream Workshop 团队协作:基于 GitHub 管理提示词库与生成资产
Pixel Dream Workshop 团队协作:基于 GitHub 管理提示词库与生成资产 1. 创意协作的痛点与解决方案 在数字创意领域,团队协作往往面临诸多挑战。创意想法难以系统化管理,优秀提示词散落在各个成员手中,生成参数缺乏统一标准&…...
nlp_gte_sentence-embedding_chinese-large长文本处理技巧:分段与聚合策略
nlp_gte_sentence-embedding_chinese-large长文本处理技巧:分段与聚合策略 1. 引言 你是不是也遇到过这样的问题:手头有一篇几十页的技术报告或者学术论文,想要用nlp_gte_sentence-embedding_chinese-large模型来提取文本向量,却…...
别再只调headingPitchRoll了!深入Cesium矩阵变换,从原理到代码理解模型朝向控制
深入Cesium矩阵变换:从数学原理到模型朝向控制的实战指南 在三维地理可视化领域,精确控制模型朝向一直是开发者面临的挑战。许多开发者习惯使用现成的headingPitchRoll方法,但当遇到复杂场景如极地附近模型旋转异常时,往往束手无策…...
手把手教你部署GLM-4v-9B:9B参数多模态模型,单卡就能跑
手把手教你部署GLM-4v-9B:9B参数多模态模型,单卡就能跑 1. GLM-4v-9B模型简介 GLM-4v-9B是智谱AI于2024年开源的多模态大模型,具有以下核心特点: 参数规模:90亿参数,单张24GB显存的显卡即可运行多模态能…...
面向高精度应用的数字控制PDH稳频电路设计与实现
1. 数字控制PDH稳频电路的核心价值 在原子钟、引力波探测这类需要亚赫兹级别频率稳定度的尖端实验中,激光稳频技术就像精密机械中的轴承——看似不起眼却决定着整个系统的性能上限。传统模拟PDH(Pound-Drever-Hall)电路虽然能提供MHz量级的反…...
学术研究助手:OpenClaw+Qwen3.5-9B自动化文献综述
学术研究助手:OpenClawQwen3.5-9B自动化文献综述 1. 为什么需要自动化文献综述工具 作为经常需要阅读大量文献的科研人员,我深刻体会到手动整理文献的痛点。每次开题或写综述时,面对上百篇PDF论文,光是下载、分类、提取关键信息…...
论文省心了!盘点2026年全网爆红的的降AI率平台
轻松降低论文AI率在2026年已不再是天方夜谭。2026年降AI率平台横空出世,实测提速效果炸裂,覆盖AI痕迹消除、文本改写润色、降重优化、学术合规检测四大核心场景,高效搞定毕业论文难题。 一、全流程王者:一站式搞定论文全链路 这类…...
