Sms多平台短信服务商系统~完成阿里云短信服务发送可自行配置

news/2024/4/18 18:22:04/文章来源:https://blog.csdn.net/qq_45502336/article/details/128844490

1.项目中引入Maven

阿里云地址

不同编程语言都有对应的SDK,你们下载自己需要的即可。

在这里插入图片描述
pom.xml中添加maven坐标

    <!--阿里云短信服务--><dependency><groupId>com.aliyun</groupId><artifactId>alibabacloud-dysmsapi20170525</artifactId><version>2.0.22</version></dependency>

在这里插入图片描述

2.业务代码

接下来的代码不是单纯的使用短信服务商提供的发送代码来完成短信的发送那样子就太简单了,我想你们也不想看这样的文章了CSDN一抓一大把,或者看官方文档即可。为了通用短信服务商,可以是腾讯云,阿里云等提供的短信业务。


        这篇文章已经推迟更新十多天了,都没时间来更新,业务代码和项目已经都是完成了我放在gitee上,到时候仓库我会公共出来,这样你们也可以拉取下来改成对应的短信发送系统。

项目使用

下面就是开始讲下项目需要配置那些数据就可以开箱即用。

系统需求

  • JDK >= 1.8
  • MySQL >= 5.7
  • Maven >= 3.0

必要配置

  • 修改数据库连接,编辑resources目录下的application-dev.yml
# 应用服务 WEB 访问端口
server:#应用的端口号port: 8080servlet:#应用的访问路径context-path: /# DataSource Config
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/itmei-sms?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=trueusername: rootpassword: root
  • doc目录下有准备好使用的itmei-sms.sql文件,到时候自己创建一个库把sql导入
    在这里插入图片描述
  • 修改短信服务商配置信息,编辑resources目录下的SmsParamsConfig.yml
## 配置短信
itmei-sms-config:#是否开启短信发送sms_send_or_not: true# 对接的短信服务商aliyun_sms:accessKeyId: xxxaccessKeySecret: xxxsignName: xxx#场景sms_scene:#场景类型appointment_success: xxxwill_arrive_store: xxxsend_it_the_night_before: xxxverification_code_sms: xxx# 腾讯云服务商tencent_sms:accessKeyId: #你自己的accessKeyIdaccessKeySecret: #你自己的accessKeySecretsignName: #你自己的签名#场景sms_scene:#场景类型appointment_success: #你自己的短信模板will_arrive_store: #你自己的短信模板send_it_the_night_before: #你自己的短信模板verification_code_sms: #你自己的短信模板

注意:
      对接的服务商名称tencent_sms,aliyun_sms可不是乱取的,每个服务商对应一个service,这个service需要实现SmsInterface接口

在这里插入图片描述
已经完成的阿里云短信实现类:

在这里插入图片描述

关于场景类型名称的key需要配置到SmsSceneEnum枚举类中定义。

在这里插入图片描述
      由于会把SmsParamsConfig.yml配置的数据转换成JSONObject对象来使用。这样我们在后续的代码中可以通过对应服务商的特征来使用对应的配置如下图调用。
在这里插入图片描述

SmsSupplierConfig类用于获取我们定义的yml文件并且把数据转成Map<String, Object>在转成JSONObject对象。

短信服务商类

已我已经完成的阿里云短信服务为例:
    在service包下imp创建对应短信发服务类如SmsAliyunServiceImpl后需要实现SmsInterface接口重写里面发方法sendSmsgetDepartmentTemplateParam,对应服务商都会提供示例代码和对应的jar包或者是maven坐标我们引入到系统即可,把示例代码写到sendSms方法中并且创建服务类中的唯一标识并且添加到SmsSupplierEnum短信服务商枚举中
在这里插入图片描述

在这里插入图片描述
按照我写好的阿里云示例代码编写好你们对接的短信服务商后,我们就开始组装需要的参数并且发送信息。

发送短信测试

项目中引入了测试类,我在SmsApplicationTests类中编写了发送测试的代码

    @Testvoid testSmsSend() {//配置需要使用的短信服务商信息等SmsTemplateConfig config = new SmsTemplateConfig();config.setSceneEnum(SmsSceneEnum.APPOINTMENT_SUCCESS.getCode());config.setSupplierEnum(SmsSupplierEnum.ALIYUN_SMS.getCode());config.setSourceEnum(SmsSendSourceEnum.PC.getCode());//自己短信模板的对应参数Map<String, Object> templateParam = new HashMap<>();templateParam.put("name", "itmei");templateParam.put("date_time", DateUtil.now());templateParam.put("address", "万达广场");templateParam.put("customer_phone", "19999999999");templateParam.put("landline", "wxid_itmei");config.setTemplateParam(templateParam);smsServiec.sendSms("19999999999", config, true);}

完成

短信发送成功保存到数据库中。
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【UE4 制作自己的载具】1-使用3dsmax制作载具

学习谌嘉诚课程所做笔记源视频链接&#xff1a;【虚幻4】UE4雪佛兰科迈罗汽车详细制作中文教程&#xff01;&#xff08;汽车骨骼绑定驾驶、动画蓝图&#xff09;汽车模型下载链接&#xff1a;https://pan.baidu.com/s/1ZH5gaAwckzRIZ0w6n0qvIA密码&#xff1a;19sj步骤&#x…

系列五、事务

一、事务简介 1.1、定义 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 例如: 张三给李四转账1000块钱&#xff0c;张…

Codeforces Round #848 (Div. 2)(A~D)

A. Flip Flop Sum给出一个只有1和-1的数组&#xff0c;修改一对相邻的数&#xff0c;将它们变为对应的相反数&#xff0c;修改完后数组的和最大是多少。思路&#xff1a;最优的情况是修改一对-1&#xff0c;其次是一个1一个-1&#xff0c;否则修改两个1。AC Code&#xff1a;#i…

2023-02-22 学习记录--TS-邂逅TS(二)

TS-邂逅TS&#xff08;二&#xff09; 不积跬步&#xff0c;无以至千里&#xff1b;不积小流&#xff0c;无以成江海。&#x1f4aa;&#x1f3fb; 一、接口&#xff08;interface&#xff09; 在 ts 中&#xff0c;子类只能继承一个父类&#xff0c;不可多继承&#xff0c;但是…

学习国家颁布的三部信息安全领域法律,理解当前工作中的信息安全合规要求

目录三部信息安全领域的法律文件三部法律的角色定位与联系三部法律的适用范围三部法律的主要履职部门三部法律条文章节结构中的共性三部法律中的一些次重点章节网络安全法的重点章节数据安全法的重点章节个人信息保护法的重点章节关于工业和信息化部行政执法项目清单三部信息安…

ChatGPT这是要抢走我的饭碗?我10年硬件设计都有点慌了

前 言 呃……问个事儿&#xff0c;听说ChatGPT能写电路设计方案了&#xff0c;能取代初级工程师了&#xff1f;那我这工程师的岗位还保得住么&#xff1f;心慌的不行&#xff0c;于是赶紧打开ChatGPT问问它。 嘿&#xff0c;还整的挺客气&#xff0c;快来看看我的职业生涯是否…

非关系型数据库(mongodb)简单使用介绍

关系型数据库与非关系型数据库 关系型数据库有mysql、oracle、db2、sql server等&#xff1b; 关系型数据库特点&#xff1a;关系紧密&#xff0c;由表组成&#xff1b; 优点&#xff1a; 易于维护&#xff0c;都是使用表结构&#xff0c;格式一致&#xff1b; sql语法通用&a…

IP地理位置定位技术原理是什么

IP地理位置定位技术的原理是基于IP地址的网络通信原理和基础上的。它利用IP地址所包含的一些信息&#xff0c;如网络前缀和地址段&#xff0c;以及ISP的IP地址归属地数据库&#xff0c;来推测IP地址所对应的地理位置。具体来说&#xff0c;IP地址是由32位二进制数字组成的&…

《计算机网络:自顶向下方法》实验2:常用网络命令的使用

使用Ping实用程序来测试计算机的网络连通性 登录到Windows中。单击开始,然后将鼠标指针移到程序上,再移到Windows系统,然后单击命令提示符。在命令提示窗口键入ping 127.0.0.1。问题1:发送了多少数据包?接受了多少数据包?丢失了多少数据包? 发送了4个数据包;接受了4个数…

Java集合(二)---Map

1.什么是Hash算法哈希算法是指把任意长度的二进制映射为固定长度的较小的二进制值&#xff0c;这个较小的二进制值叫做哈希值static final int hash(Object key) {int h;return (key null) ? 0 : (h key.hashCode()) ^ (h >>> 16);}以上是HashMap中的hash算法代码2…

机器学习------ 基于ubuntu 22.04 系统下的pytorch 安装记录过程(包含cuda和cudnn的安装)

机器学习----- pytorch的安装过程 最近&#xff0c;在学习机器学习&#xff0c;在对于理论方面进行一段时间的学习后&#xff0c;打算开始上手代码。在此之前&#xff0c;选择了pytorch作为学习的工具&#xff0c;这里记录下安装的过程。在这里&#xff0c;先把我的设备展示一…

java10-异常处理

1.异常处理体系结构 2.从程序执行过程看编译时异常和运行时异常 》编译时异常&#xff1a;执行javac.exe命令时&#xff0c;可能出现的异常 》运行时异常&#xff1a;执行java.exe命令时&#xff0c;出现的异常 3.常见的异常类型&#xff0c;请举例说明&#xff1a; Test …

PCL 平面拟合方法 对比

目录 一、最小二乘法 (Least Squares, LS) 二、采样一致性&#xff08;Sample Consensus&#xff09;方法 2.1 pcl::LeastMedianSquares (LMedS) 2.2 pcl::RandomSampleConsensus (RANSAC) 2.3 pcl::MEstimatorSampleConsensus (MSAC) 2.4 pcl::RandomizedRandomSampleCo…

解决Ubuntu22.04.1上安装ch34x串口驱动报 Key was rejected by service 需要签名的问题

解决Ubuntu22.04.1上安装ch34x串口驱动报 Key was rejected by service 需要签名的问题问题官网下载解压驱动包编译安装给驱动签名再来载入模块&#xff08;设备驱动程序&#xff09;问题 Ubuntu22.04.1 Linux版本5.19.0-32-generic 运行Qt串口通信 m_serialPort->open(QIO…

数组类模板

要求&#xff1a;设计一个数组模板类&#xff08;MyArray&#xff09;&#xff0c;完成对不同类型元素的管理操作步骤设计头文件在 qtcreate下先创建03_code的项目&#xff0c;然后右键点击03_code添加新文件&#xff0c;点击头文件&#xff0c;点击Choose命名为 myarry.hpp&am…

[黑马程序员SSM框架教程]03 spring核心概念

IOC/DI 书写现状&#xff1a;耦合度偏高 如图&#xff1a;传统书写代码左边业务层需要new一个对象进行业务实现。当数据层优化代码BookDaoImpl2就需要动业务层代码重新修改new的对象。导致代码耦合度偏高。 解决办法&#xff1a;使用对象&#xff0c;不要主动new对象&#xff…

设计模式.工厂模式.黑马跟学笔记

设计模式.工厂模式4.创建型模式4.2 工厂模式4.2.1 概述4.2.2 简单工厂模式4.2.2.1 结构4.2.2.2 实现4.2.2.4 优缺点4.2.2.3 扩展4.2.3 工厂方法模式4.2.3.1 概念4.2.3.2 结构4.2.3.3 实现4.2.3.4 优缺点4.2.4 抽象工厂模式4.2.4.1 概念4.2.4.2 结构4.2.4.2 实现4.2.4.3 优缺点4…

关于java8的List的stream流的foreach()方法问题探究(坑)与替代方案

一、起因 今天发现线上系统出现了一个bug&#xff0c; 我有一个“定时任务”每天凌晨触发&#xff0c;任务内容&#xff1a; ① 定时调用的系统暴漏的接口&#xff0c;来定时获取List<Object>数据。 ② 然后我会筛选出该List中符合条件的Object&#xff0c;对筛选出来的…

【Python入门第十五天】Python字典

字典&#xff08;Dictionary&#xff09; 字典是一个无序、可变和有索引的集合。在 Python 中&#xff0c;字典用花括号编写&#xff0c;拥有键和值。 实例 创建并打印字典&#xff1a; thisdict {"brand": "Porsche","model": "911&q…

科技新浪推前浪 ChatGPT将元宇宙“拍在沙滩上”?

近期ChatGPT的热度显然已经盖过了元宇宙&#xff0c;回想去年元宇宙大热之际&#xff0c;很多企业纷纷跟进&#xff0c;甚至还有不少公司选择更名以表达All In元宇宙的决心。而如今ChatGPT抢占风头&#xff0c;成为新宠&#xff0c;元宇宙似乎被“抛弃”了&#xff0c;难道元宇…