在Spring Boot应用中实现阿里云短信功能的整合

devtools/2024/10/19 0:20:10/

1.程序员必备程序网站

天梦星服务平台 (tmxkj.top)icon-default.png?t=N7T8https://tmxkj.top/#/

2.导入坐标

       <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.0</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>1.0.0</version></dependency>

3.yml文件配置

aliyun:sms: #阿里云发短信access-key-id: "********"  #角色的idaccess-key-secret: "******" #角色的密匙sign-name: "天梦星科技"template-code: "*******"

4.核心代码

@Component
public class SmsUtil {@Value("${aliyun.sms.access-key-id}")private String accessKeyId;@Value("${aliyun.sms.access-key-secret}")private String accessKeySecret;@Value("${aliyun.sms.sign-name}")private String signName;@Value("${aliyun.sms.template-code}")private String templateCode;public Result sendSms(String phone, String code) throws ClientException {Result result = new Result();IAcsClient client = new DefaultAcsClient(DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret));CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain("dysmsapi.aliyuncs.com");request.setSysVersion("2017-05-25");request.setSysAction("SendSms");request.putQueryParameter("RegionId", "cn-hangzhou");request.putQueryParameter("PhoneNumbers", phone);request.putQueryParameter("SignName", signName);request.putQueryParameter("TemplateCode", templateCode);request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}");CommonResponse response = client.getCommonResponse(request);if (JSON.parseObject(response.getData()).get("Message").equals("OK")){result.setCode(200);result.setMsg("短信发送成功");}else {result.setCode(400);result.setMsg(JSON.parseObject(response.getData()).get("Message"));}return result;}}

 

public class ToolUtil {/*** 判断是否是手机号* @param phoneNumber* @return*/public static boolean isPhoneNumber(String phoneNumber) {String regex = "^1[3-9]\\d{9}$";return Pattern.matches(regex, phoneNumber);}/*** 获取长度为 5 的随机数字* @return 随机数字*  用途短信验证码*/public static String getSmsRandomNumber() {char[] nonceChars = new char[5];  //指定长度为6位/自己可以要求设置for (int index = 0; index < nonceChars.length; ++index) {nonceChars[index] = SYMBOLS2.charAt(RANDOM.nextInt(SYMBOLS2.length()));}return new String(nonceChars);}
}

 

5.调用测试

    /*** 发送短信验证嘛*/@GetMapping("/sendMessage")public Result sendMessage(@RequestParam("phone") String phone){Result result = new Result();String code = getSmsRandomNumber(); // 生成随机验证码try {if(isPhoneNumber(phone)){//redisDao.vSet(code,code,imaileEpxtime);result = smsUtil.sendSms(phone, code);}else {result.setCode(400);result.setMsg("手机号格式错误!");}} catch (ClientException e) {e.fillInStackTrace();result.setCode(500);result.setMsg(e.getErrMsg());}return result;}

6.成功示例


http://www.ppmy.cn/devtools/9985.html

相关文章

paddlepaddle/paddle 命令注入漏洞复现_$1500 CVE-2024-0934

目录 1.漏洞概述 2.影响版本 3.漏洞等级 4.漏洞复现 4.1 安装漏洞环境

fixture固件和装饰器@pytest.mark.parametrize的参数化差异

fixture固件中有params参数可以进行参数化配置&#xff0c;装饰器pytest.mark.parametrize也可以为用例进行参数化配置&#xff0c;它们都是pytest框架中用于参数化测试的机制&#xff0c;但它们之间还是有很大差异的&#xff0c;该篇文章就来讲一讲这二者的区别使用&#xff1…

零售数据分析方案:深度剖析人、货、场

人&#xff0c;即会员分析、用户分析&#xff0c;通过分析获得直观的用户画像&#xff0c;了解目标用户群体的消费水平、喜好、频率&#xff0c;为销售营销决策提供必要的数据支持&#xff1b;货&#xff0c;即商品分析&#xff0c;包括但不限于分析商品结构、分析销售top10商品…

day07 51单片机-串口通信

51 单片机-串口通信 1 串口通信 1.1 需求描述 本案例讲解如何通过串口和PC以9600波特率,无校验位、1停止位通信。最终实现PC向单片机发送字符串,单片机回复PC。本案例中采用串口1通信。 1.2 硬件设计 1.2.1 串口工作原理 串口是将数据按照比特逐一发送的通信接口。在串…

go语言实现心跳机制样例

1、服务端代码&#xff1a; package mainimport ("fmt""net" )func handleClient(conn net.Conn) {defer conn.Close()fmt.Println("Client connected:", conn.RemoteAddr())// 读取客户端的数据buffer : make([]byte, 1024)for {n, err : conn…

SQL UNION

在SQL中&#xff0c;UNION 是一个用于合并两个或多个 SELECT 语句结果集的操作符。使用 UNION 时&#xff0c;结果集会去重&#xff0c;只包含唯一的行。如果保留重复的行&#xff0c;可以使用 UNION ALL。 以下是 UNION 的一些关键点&#xff1a; 1. 去重&#xff1a;UNION 默…

Redis服务

参考文章&#xff1a; Win.dow.s上安装Redis教程 redis数据库基础篇 Redis 的安装及图形化界面 Redis DeskTop Manager 的安装与使用 下载Redis Redis压缩包 打开Redis 法1&#xff1a; 双击redis-server.exe 应用程序 法2&#xff1a; 进入redis目录下&#xff0c;打cmd…

【后端】django查询时的性能优化技巧

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、为什么需要性能优化二、性能优化的常用技巧三、总结 前言 随着开发语言的不断普及&#xff0c;越来越多的项目建设场景会遇到性能瓶颈&#xff0c;本文就介…