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