大家好,我是勇哥。 在 2023 年,勇哥写了一个开源版的短信平台 ,见链接。 三个月写了个迷你版的短信平台,开源出来!
最近,我花了两个月时间重写了我们的短信服务项目(知识星球版本)。这次重构主要基于几个核心需求:
- 不同类型的短信需要发送隔离 营销短信、验证码短信和通知短信的时效性要求不同,需要从队列、拉取、消费到发送的链路完全独立。
- 渠道配置需要更灵活 不同短信渠道(如腾讯云、阿里云)的配置项不同,系统需要支持动态扩展,例如腾讯云需单独配置 appId。
- SDK 需支持批量发送 无论是单发还是群发,SDK 都要提供简洁易用的接口,并同时支持国内与国际短信。
- 管理端支持大规模批量发送 支持通过界面上传 Excel 文件进行批量发送,能够稳定处理十万级别的发送任务。


1 短信渠道配置
系统默认支持腾讯云、阿里云、合一短信、亿美四种渠道,每种渠道都有独立的配置页面,并支持动态扩展字段。例如腾讯云可以单独配置 appId,确保不同渠道的差异化参数都能灵活接入。

每种渠道支持配置单独的配置项 :

如图,腾讯 SDK 发送短信需要配置 appId , 我在设计页面时,增加了渠道扩展字段,可以动态的添加属性。
2 短信类型发送隔离
针对营销、验证码、通知不同类型的短信,系统为每种类型独立配置了消息队列主题、拉取线程和消费线程,实现从队列到发送的全程隔离,避免相互影响,保障高时效性短信的优先送达。

3 SDK 支持批量发送
在 SDK 层面,已完整实现单发与批量发送接口,同时支持国内与国际短信,调用简单,易于集成到各类业务系统中。

4 管理端批量发送(手工 + 文件)
1、模板无参数

如图,当配置的短信模板没有参数时,可以直接手工输入手机号 ,发送短信。
2、模板有参数

如图,我们上传了一个示例 Excel , Excel 内部的数据格式:

短信模板内容是:
bash
${code}为您的登录验证码,请于${time}分钟内填写,如非本人操作,请忽略本短信。
提交任务之后,可以查看任务列表 以及任务详情 ,也可以精确到通过哪个渠道发送短信。

5 总结
本项目基于勇哥开源的 magic-admin 项目研发,虽然花了不少时间,但因个人开发者当前已无资质申请短信模板(需企业资质),自测范围有限。同时受限于个人精力,部分功能暂时做了隐藏:自动向渠道申请模板 和 回调回执机制 。
对该项目感兴趣的朋友,可以联系我,加入知识星球获取完整源码。