当前位置: 首页 > news >正文

扩展------项目中集成阿里云短信服务

引言

        在当今数字化时代,短信服务在各种项目中扮演着重要角色,如用户注册验证、订单通知、营销推广等。阿里云短信服务凭借其稳定、高效和丰富的功能,成为众多开发者和企业的首选。本文将详细介绍如何在项目中集成阿里云短信服务,帮助开发者快速上手并实现相关功能。

阿里云短信服务简介

  1. 服务特点

    • 高送达率:依托阿里云强大的通信网络和优化算法,确保短信能够快速、准确地送达用户手机。

    • 高并发处理能力:能够支持大规模的短信发送请求,满足企业级应用的需求。

    • 丰富的功能:提供多种短信模板类型,支持变量替换,方便个性化定制短信内容。

    • 安全可靠:采用多重安全防护机制,保障用户数据和隐私安全。

  2. 应用场景

    • 用户注册与登录:发送验证码短信,实现用户身份验证。

    • 订单通知:及时通知用户订单状态更新,如发货、配送、完成等。

    • 营销推广:向用户发送促销活动、新品推荐等短信,提升用户活跃度和转化率。

    • 其他通知:如账户余额提醒、系统公告等。

集成步骤

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、验证测试 

 

                                          

相关文章:

扩展------项目中集成阿里云短信服务

引言 在当今数字化时代&#xff0c;短信服务在各种项目中扮演着重要角色&#xff0c;如用户注册验证、订单通知、营销推广等。阿里云短信服务凭借其稳定、高效和丰富的功能&#xff0c;成为众多开发者和企业的首选。本文将详细介绍如何在项目中集成阿里云短信服务&#xff0c;帮…...

MySQL面试篇——性能优化

MySQL性能优化 在MySQL中&#xff0c;如何定位慢查询 慢查询表象&#xff1a;页面加载过慢、接口压测响应时间过长&#xff08;超过1s&#xff09;。造成慢查询的原因通常有&#xff1a;聚合查询、多表查询、表数据量过大查询、深度分页查询 方案一&#xff1a;开源工具 调试工…...

Java EE 进阶:Spring MVC(2)

cookie和session的关系 两者都是在客户端和服务器中进行存储数据和传递信息的工具 cookie和session的区别 Cookie是客⼾端保存⽤⼾信息的⼀种机制. Session是服务器端保存⽤⼾信息的⼀种机制. Cookie和Session之间主要是通过SessionId关联起来的&#xff0c;SessionId是Co…...

ShardingSphere 和 Spring 的动态数据源切换机制的对比以及原理

ShardingSphere 与 Spring 动态数据源切换机制的对比及原理 一、核心定位对比 维度ShardingSphereSpring动态数据源&#xff08;如 AbstractRoutingDataSource&#xff09;定位分布式数据库中间件轻量级多数据源路由工具核心目标分库分表、读写分离、分布式事务多数据源动态切…...

基于Django的协同过滤算法养老新闻推荐系统的设计与实现

基于Django的协同过滤算法养老新闻推荐系统&#xff08;可改成普通新闻推荐系统使用&#xff09; 开发工具和实现技术 Pycharm&#xff0c;Python&#xff0c;Django框架&#xff0c;mysql8&#xff0c;navicat数据库管理工具&#xff0c;vue&#xff0c;spider爬虫&#xff0…...

AI视频生成工具清单(附网址与免费说明)

以下是一份详细的AI视频制作网站总结清单&#xff0c;包含免费/付费信息及核心功能说明&#xff1a; AI视频生成工具清单&#xff08;附网址与免费说明&#xff09; 1. Synthesia 网址&#xff1a;https://www.synthesia.io是否免费&#xff1a;免费试用&#xff08;生成视频…...

JavaWeb学习——HTTP协议

HTTP 协议 什么是 HTTP 协议 HTTP&#xff08;超文本传输协议&#xff0c;HyperText Transfer Protocol&#xff09;是用于在客户端&#xff08;如浏览器&#xff09;和服务器之间传输超文本&#xff08;如网页、图片、视频等&#xff09;的应用层协议。它是现代互联网数据通…...

QP 问题(Quadratic Programming, 二次规划)

QP 问题&#xff08;Quadratic Programming, 二次规划&#xff09;是什么&#xff1f; QP&#xff08;Quadratic Programming&#xff0c;二次规划&#xff09;是一类优化问题&#xff0c;其中目标函数是二次型函数&#xff0c;约束条件可以是线性等式或不等式。 QP 问题是线…...

VSTO(C#)Excel开发2:Excel对象模型和基本操作

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;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 初 始 化 类 型访 问 元 素一 维 数 组 在 内 存 中 的 存 储 总结 &#x1f4bb;作 者 简 介&#xff1a;曾 与 你 一 样 迷 茫&#xff0c;…...

[视频编码]rkmpp 实现硬件编码

mpi_enc_test的命令参数描述说明 命令参数的描述说明如下&#xff1a; 命令参数 描述说明 -i 输入的图像文件。 -o 输出的码流文件。 -w 图像宽度&#xff0c;单位为像素。 -h 图像高度&#xff0c;单位为像素。 -hstride 垂直方向相邻两行之间的距离&#xff0c;单…...

3D数字化:家居行业转型升级的关键驱动力

在科技日新月异的今天&#xff0c;家居行业正经历着一场前所未有的变革。从传统的线下实体店铺到线上电商平台的兴起&#xff0c;再到如今3D数字化营销的广泛应用&#xff0c;消费者的购物体验正在发生翻天覆地的变化。3D数字化营销不仅让购物变得更加智能和便捷&#xff0c;还…...

网安知识点

1.SQL注入漏洞产生的原因是&#xff1f; 前端传到后端的数据&#xff0c;没有经过任何处理&#xff0c;直接当作sql语句的一部分来执行 2.讲一下sql注入&#xff0c;写入webshell需要哪些前提条件 开启导入导出权限secure-file-priv 站点根目录位置/路径 mysql用户对站点根目…...

天津大学02-深度解读DeepSeek:部署、使用、安全【文末附下载链接】

大模型风险与不当用例——价值观错位 大模型与人类价值观、期望之间的不一致而导致的安全问题&#xff0c;包含&#xff1a;• 社会偏见&#xff08;Social Bias&#xff09;LLM在生成文本时强化对特定社会群体的刻板印象&#xff0c;例如将穆斯林与恐怖主义关联&#xff0c;或…...

【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主要用于提供网络服务&#xff0c;并实现微服务架构中的几个核心功能&#xff1a;全自动…...

Python卷积神经网络(CNN)来识别和计数不同类型的工业零件

以下三种类型工业零件为例&#xff0c;使用卷积神经网络&#xff08;CNN&#xff09;来识别和计数不同类型的工业零件。以下是Python实现步骤&#xff1a; 数据准备&#xff1a;收集并标注包含不同形状&#xff08;如方形、圆形、扇形&#xff09;的工业零件图像数据集。 模型…...

MoonSharp 文档二

目录 6.Sharing objects 我们先来简单谈谈类型描述符 先说类型描述 稍微复杂一点 调用静态成员 应该使用 “:” 还是 “.” 重载 ByRef 参数&#xff08;C# 中的 ref/out&#xff09; 索引器 userdata 上的运算符和元方法 扩展方法 事件 关于 InteropAccessMode 的…...

android 支持自定义布局、线程安全、避免内存泄漏的 Toast 工具类

支持自定义布局&#xff1a;可以灵活地显示自定义样式的 Toast。 线程安全&#xff1a;确保在主线程中显示 Toast&#xff0c;避免崩溃。 避免内存泄漏&#xff1a;使用 ApplicationContext 和取消机制&#xff0c;防止内存泄漏问题。 工具类&#xff1a;作为一个通用的工具…...

景联文科技:以精准数据标注赋能AI进化,构筑智能时代数据基石

在人工智能技术席卷全球的浪潮中&#xff0c;高质量数据已成为驱动AI模型进化的核心燃料。作为全球领先的AI数据服务解决方案提供商&#xff0c;景联文科技深耕数据标注领域多年&#xff0c;以技术为基、以专业为本&#xff0c;致力于为全球客户提供全场景、高精度、多模态的数…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...