短信发送Sms4J

news/2025/2/13 15:52:27/文章来源:https://www.cnblogs.com/liu-lmx/p/18713771

1.背景

所周知,在我们日常的项目开发中,短信验证码发送是一个必不可少的环节。

特别是如今手机互联网时代,基本所有东西都跟手机强绑定,所有的安全验证都离不开验证码这一环节。

所以对于一个系统来说,发送短信验证码成为一个必不可少的功能,面对市场上短信各种繁杂的API接口更是无从下手。

为了解决这种痛点,SMS4J孕育而生。

2.介绍

官网

https://github.com/dromara/SMS4J

SMS4J说白点就是一个聚合各种短信API商的工具,封装了各个短信商的API,通过一个通用的标准暴露出来,减少开发者的工作量。

不必为了一个短信浪费太多的精力和时间,只需要通过更改简单的配置文件即可使用。

把简单、易用、方便留给用户,把复杂留给框架,而SMS4J的正是这样的一个框架。

3.使用

Easy-Es作为一款轻巧强大、简单高效、功能丰富的框架,使用起来也是很方便。

3.1引入依赖

Maven Repository: Search/Browse/Explore (mvnrepository.com)

打开网址直接搜索sms4j即可

<dependency>
 <groupId>org.dromara.sms4j</groupId>
 <artifactId>sms4j-spring-boot-starter</artifactId>
 <version>最新版本</version>
</dependency><!-- https://mvnrepository.com/artifact/org.dromara.sms4j/sms4j-spring-boot-starter -->
<dependency><groupId>org.dromara.sms4j</groupId><artifactId>sms4j-spring-boot-starter</artifactId><version>3.3.3</version>
</dependency>

3.2配置

在配置文件中添加SMS4J 必须的相关配置

sms:
   config-type: yaml
   blends:
       自定义标识1:
         #阿里云的accessKey
         accessKeyId: 您的accessKey
         #阿里云的accessKeySecret
         accessKeySecret: 您的accessKeySecret
         #短信签名
         signature: 测试签名
         #模板ID 用于发送固定模板短信使用
         templateId: SMS_215125134
         #模板变量 上述模板的变量
         templateName: code
         #请求地址 默认为dysmsapi.aliyuncs.com 如无特殊改变可以不用设置
         requestUrl: dysmsapi.aliyuncs.com
       自定义标识2:
         #华为短信appKey
         appKey: 5N6fvXXXX920HaWhVXXXXXX7fYa
         #华为短信appSecret
         app-secret: Wujt7EYzZTBXXXXXXEhSP6XXXX
         #短信签名
         signature: 华为短信测试
          #通道号
         sender: 8823040504797
         #模板ID 如果使用自定义模板发送方法可不设定
         template-id: acXXXXXXXXc274b2a8263479b954c1ab5
         #华为回调地址,如不需要可不设置或为空
         statusCallBack:
         #华为分配的app请求地址
         url: https://XXXXX.cn-north-4.XXXXXXXX.com:443
       自定义标识3:
         #助通短信
         #助通终端用户管理的用户名 username 必填;非登录账号密码,请登录后台管理地址进行查看:https://mix2.zthysms.com/login
         accessKeyId: tusxxxxxxXXX
         #助通终端用户管理的用户名 passwrod 必填;
         accessKeySecret: UbXXXxxx
         #短信签名,可选;可选的时候,只能使用自定义短信不能使用模板短信; 具体在这里查看审核过的短信签名:https://mix2.zthysms.com/index.html#/SignatureManagement
         signature: 上海千XXXX

3.3开始使用

@RestController
@RequestMapping("/test/")
public class DemoController {    // 测试发送固定模板短信
    @RequestMapping("/")
    public void send() {
         //阿里云向此手机号发送短信
        SmsFactory.getSmsBlend("自定义标识1").sendMessage("18888888888","123456");
        //华为短信向此手机号发送短信
        SmsFactory.getSmsBlend("自定义标识2").sendMessage("16666666666","000000");
    }
}

4.最后

SMS4J使用特别简单,是一个小巧丰富的短信验证码发送工具,目前支持国内十多家短信运营商,基本满足我们开发对接使用。

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

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

相关文章

SQLserver开启CDC功能

1.查询数据库是否已经开启CDC功能 select is_cdc_enabled,name from sys.databases where name=databasename; 开启为1,未开启为02.库级别开启CDC功能 use databasename GO exec sys.sp_cdc_enable_db 3.再次确认CDC功能是否开启 select is_cdc_enabled,name from sys.databas…

N1Junior

N1JuniorGavatar 核心逻辑如下: upload.php <?php require_once common.php;$user = getCurrentUser(); if (!$user) header(Location: index.php);$avatarDir = __DIR__ . /avatars; if (!is_dir($avatarDir)) mkdir($avatarDir, 0755);$avatarPath = "$avatarDir/{$…

软件自启动取消权限弹窗询问设置

方案1:创建任务计划--启动软件取消UAC权限询问弹窗 1.1 打开任务计划 右键“我的电脑”--“管理”,打开任务计划,如图所示1.2 创建任务计划1.2.1 常规参数设置1.2.2 触发器设置1.2.3 操作设置最后按确定即可完成任务计划创建,至此电脑重启登陆后,软件都会自动启动 方案2:…

hgame 第一周

hgame 第一周Pacman 前端反调试题,找到了一个串.aGFldTRlcGNhXzR0cmdte19yX2Ftbm1zZX0=.base64解码后百思不得其解,后来发现还有一个栅栏加密,纯烂活... hgame{u_4re_pacman_m4ster} BandBomb const express = require(express); const multer = require(multer); const fs = r…

Deepseek学习随笔(2)--- 快速上手DeepSeek

注册与登录 要开始使用 DeepSeek,你需要先注册一个账号。以下是具体步骤:访问 DeepSeek 官网。 使用邮箱或手机号注册账号。 登录后进入控制台,开始使用。控制台功能介绍 DeepSeek 的控制台提供了丰富的功能,帮助你更好地使用工具:对话窗口:在这里输入你的问题或指令,De…

【原创】大数据治理入门(4)《保护数据隐私:大数据治理的最佳实践》入门必看 高赞实用

在大数据治理中,保护数据隐私是至关重要的。通过了解和遵守相关法规,采用数据脱敏、匿名化和隐私计算等技术手段,企业可以有效降低数据隐私泄露的风险,提升用户的信任度和企业的竞争力。希望本文能够为您提供全面的数据隐私保护指南。保护数据隐私:大数据治理的最佳实践 引…

【原创】大数据治理入门(1)《大数据治理入门:为什么重要?》入门必看 高赞实用

随着互联网的快速发展,数据的生成和积累速度达到了前所未有的水平。大数据通常被定义为规模巨大、类型多样且生成速度快的数据集合。这些数据不仅包括结构化数据(如数据库中的表格数据),还包括非结构化数据(如文本、图片、视频等)。大数据的重要性在于其能够帮助企业更好…

【MySQL安全】复现Mysql LOAD DATA 读取客户端任意文件漏洞

前言 MySQL 客户端和服务端通信过程中是通过对话的形式来实现的,客户端发送一个操作请求,然后服务端根据客户端发送的请求来响应客户端,在这个过程中客户端如果一个操作需要两步才能完成,那么当它发送完第一个请求过后并不会存储这个请求,而是直接丢弃,所以第二步就是根据…

线程/进程

进程 1.是资源分配的基本单元 2.拥有独立的内存空间和资源 3.开销较大 4.稳定性高,一个进程的崩溃不会影响其他的进程 线程 1.是cpu调度的基本单元 2.共享进程的资源 3.开销较小 4.稳定性不高,一个线程崩溃可能会导致其他线程的崩溃当我们写完一个线程之后可以通过idea的安装…

nginx代理grafana配置

配置grafna的nginx代理配置环境背景:监控系统用的是Prometheus+altermanager+grafana+xxx-exporter实现的,现在业界内的夜莺监控系统已经非常的成熟了,使用夜莺管理配置监控相对比Prometheus+altermanager要友好很多,使用也方便,直接页面配置就好。但是相对图表化的监控信…

IPD流程管理之市场需求精准把握方法

IPD(Integrated Product Development)流程管理旨在通过整合产品开发的各个环节,实现高效、高质量的产品交付。在这一过程中,精准把握市场需求是成功的关键。只有深入了解市场需求,企业才能开发出符合客户期望的产品,从而在激烈的市场竞争中占据优势。本文将详细探讨IPD流…

VSCode 搭建 MySQL 源码调试环境

在使用MySQL数据库的过程中,如果遇到一些复杂的问题,可以通过GDB进行调试,本篇将演示如何在Win 10环境基于VSCode搭建MySQL源码调试环境。 一、调试环境 本次调试需要用到的软件和环境为:Red Hat Enterprise Linux release 8.10 (Ootpa) MySQL 8.0.40 VSCode 1.96.4二、编译…