1K star!这个开源项目让短信集成简单到离谱,开发效率直接翻倍!

嗨,大家好,我是小华同学,关注我们获得"最新、最全、最优质"开源项目和高效工作学习方法

"让简单的事情回归简单的本质" ------ SMS4J 项目宣言

SMS4J 是一款由国内技术团队打造的短信聚合框架,专为解决多短信服务商接入难题而生。它就像短信界的"瑞士军刀",目前已整合21家主流短信服务商,从阿里云、腾讯云到中国移动云MAS,开发者只需通过简单配置即可实现多平台无缝切换。

核心功能亮点

1. 多厂商一键切换

支持包括阿里云、华为云、京东云等21家服务商,更换服务商只需修改配置文件:

yaml 复制代码
sms:
  blends:
    aliyun:
      accessKeyId: YOUR_KEY
      signature: 公司签名
    huawei:
      appKey: YOUR_KEY
      sender: 8823040504797

2. 极简API设计

三行代码完成短信发送:

java 复制代码
// 获取阿里云短信服务
SmsBlend aliyun = SmsFactory.getSmsBlend("aliyun");
// 发送验证码
aliyun.sendMessage("18888888888", "123456");
// 批量发送
aliyun.massTexting(List.of("18888888888","16666666666"), "系统通知");

3. 智能线程池管理

内置可配置化线程池,轻松应对高并发场景:

makefile 复制代码
sms:
  corePoolSize: 20    # 核心线程数
  maxPoolSize: 100    # 最大线程数
  queueCapacity: 200  # 等待队列容量

4. 模板灵活配置

支持固定模板与自定义模板双模式:

csharp 复制代码
// 固定模板发送
aliyun.sendMessage("18888888888", "123456");

// 自定义模板
Map<String, String> params = new HashMap<>();
params.put("code", "654321");
params.put("time", "5分钟");
huawei.sendMessage("16666666666", params);

5. 全链路可监控

提供发送状态回调机制,实时掌握短信投递情况:

arduino 复制代码
// 设置华为云回调
huawei.setStatusCallBack("https://your-domain.com/callback");

技术架构解析

层级 技术实现 功能说明
接口层 统一API规范 提供标准化发送接口
适配层 厂商SDK适配器 封装各平台差异化实现
核心层 Spring Boot Starter 自动化配置
异步层 ThreadPoolTaskExecutor 异步任务处理
扩展层 SPI机制 支持自定义扩展

典型应用场景

场景1:电商平台

  • 订单通知
  • 物流提醒
  • 促销推送
arduino 复制代码
// 大促期间批量发送
jdCloud.massTexting(vipUsers, "年中大促5折优惠!");

场景2:政务系统

  • 审批通知
  • 会议提醒
  • 政策传达
csharp 复制代码
// 政务短信模板
Map<String, String> params = new HashMap<>();
params.put("applicant", "张先生");
params.put("date", "2024-03-15");
ctyun.sendMessage("18888888888", params);

场景3:金融行业

  • 交易验证
  • 风险预警
  • 账户变动
ini 复制代码
// 风控验证码
String code = generateRandomCode();
aliyun.sendMessage(userPhone, code);
redis.saveCode(userId, code);

同类项目对比

项目 支持厂商 配置复杂度 学习曲线 扩展性 社区活跃度
SMS4J 21+ ★☆☆☆☆ 1天
阿里云SDK 1 ★★★☆☆ 3天
腾讯云SDK 1 ★★★★☆ 3天
短信宝 3 ★★☆☆☆ 2天

为什么选择SMS4J?

  1. 成本直降:更换服务商无需重写代码,轻松比价选择最优方案
  2. 风险分散:支持多服务商并行配置,自动故障转移
  3. 效率飞跃:开发时间从3天缩短到1小时
  4. 统一监控:所有短信服务统一日志追踪
  5. 持续进化:每月新增1-2个服务商支持

快速入门指南

步骤1:添加依赖

xml 复制代码
<dependency>
    <groupId>org.dromara.sms4j</groupId>
    <artifactId>sms4j-spring-boot-starter</artifactId>
    <version>3.3.4</version>
</dependency>

步骤2:配置服务商

yaml 复制代码
sms:
  blends:
    aliyun:
      accessKeyId: AKID123456
      accessKeySecret: SECRET789
      signature: 阿里云签名
      templateId: SMS_215125134
    huawei:
      appKey: 5N6fvXXXX920HaWhVXXXXXX7fYa
      app-secret: Wujt7EYzZTBXXXXXXEhSP6XXXX
      signature: 华为签名
      sender: 8823040504797

步骤3:代码调用

kotlin 复制代码
@RestController
public class SmsController {
    
    @GetMapping("/sendAliyun")
    public String sendAliyunSms() {
        SmsFactory.getSmsBlend("aliyun")
                 .sendMessage("18888888888", "您的验证码是:123456");
        return "短信已发送";
    }
}

同类项目推荐

  1. EasySMS:轻量级短信网关,支持5家服务商

    • 特点:超小体积(仅200KB)
    • 不足:缺乏异步支持
  2. SmsAggregator:企业级短信中台

    • 特点:支持流量控制、报表统计
    • 不足:配置复杂,学习成本高
  3. UniSMS:跨平台解决方案

    • 特点:支持Java/Python/Go
    • 不足:仅支持国际短信

项目地址

github.com/dromara/SMS...

相关推荐
摇滚侠5 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 使用 JdbcTemplate 阅读笔记 32
spring boot·笔记·后端
步行cgn6 小时前
@Configuration 详解:Spring 配置类的核心注解
java·后端·spring
桦说编程8 小时前
【AtomicAgent系列1】变异测试——过去做不起,现在 agent 做得起
后端·ai编程·vibecoding
峰向AI9 小时前
告别 API 费用! 这个开源工具让你的 AI 助手在本地运行
github
kyriewen9 小时前
我手写了个极简版 React Router——才搞懂 v6 为什么砍了这么多 API
前端·javascript·程序员
考虑考虑9 小时前
nginx打印请求日志
运维·后端·nginx
IT_陈寒9 小时前
Python的切片赋值把我坑惨了,这不是bug是特性
前端·人工智能·后端
CoderLiu9 小时前
程序化工具调用(PTC)与动态工作流引擎:深入大模型工具调用的架构演进与实践
前端·人工智能·后端
fireworks999 小时前
SpringBoot2接入Knife4j
后端
wei_shuo10 小时前
数据迁移工具实战:KDMS自动化评估与量化决策体系解析
后端