大家好,今天很高兴和大家分享 ForgeAdmin 的最新进展。经过这段时间的开发,我们完成了消息管理模块的重大升级:
✅ 整合 sms4j - 企业级短信开发框架✅ 完整的邮件服务支持✅ 消息管理模块重构,增加消息发送测试和完整监控
项目介绍
如果你还不了解 ForgeAdmin,这是一个基于 微内核 + 全插件化 架构的中后台管理系统,基于 Spring Boot 3 + Vue 3 + TypeScript + Naive UI + UnoCSS 开发。
相比传统的全功能框架(比如 RuoYi),ForgeAdmin 的最大特点是插件化架构,内核非常干净,所有功能都是插件,你需要什么就加载什么,不需要就可以删掉,项目非常轻巧。
🔗 项目地址: gitee.com/ForgeLab/fo…
欢迎 Star 🌟 关注项目更新!
本次更新内容
1. 整合 sms4j 短信服务
sms4j 是目前国内最好的开源企业级短信开发框架,支持市面上主流的短信服务商:
- 阿里云
- 腾讯云
- 华为云
- 京东云
- 七牛云
- 容联云通讯
- 网易云信
- 阿里云国际站
- 百度云
- 亿美软通
- 国脉中讯
- 云片网
- 助通科技
- 天毅创
- 启网科技
为什么选择 sms4j?
- 统一的短信发送接口,切换服务商只需要改配置,不需要改代码
- 支持配置多账号,不同业务可以使用不同的短信账号
- 完善的日志和异常处理
- 社区活跃,持续维护
2. 完整的邮件服务支持
除了短信,我们也增加了完整的邮件服务支持:
- ✅ 支持 HTML 格式邮件
- ✅ 支持纯文本邮件
- ✅ 支持带附件的邮件
- ✅ 支持抄送、密送
- ✅ 支持自定义邮件模板
邮件发送也采用了和短信一致的设计思想:配置化管理,你可以在后台配置多个邮件账号,不同业务使用不同账号。
3. 短信和邮件配置后台可视化管理
现在你可以直接在后台界面配置短信和邮件,不需要修改配置文件重启服务:
- 配置多个短信账号
- 设置默认账号
- 查看配置详情
- 配置 SMTP 服务器地址、端口、账号密码
- 支持 SSL/TLS 加密
- 支持设置发件人昵称
4. 消息管理模块重构,增加完整的消息监控
这次更新我们对消息管理模块做了重大重构,增加了独立的消息管理页面,现在管理员可以:
✨ 消息发送测试功能
在配置完短信或邮件后,你可以直接在后台发送测试消息验证配置是否正确,不需要再写代码测试:
- 选择发送渠道(站内信/短信/邮件)
- 输入消息标题和内容
- 选择接收用户
- 一键发送,立即看到发送结果
📊 完整的消息发送监控
管理员可以查看所有消息的发送记录:
- 按消息类型、发送渠道、发送状态筛选
- 按时间范围搜索
- 关键词搜索标题和内容
- 查看消息详情:包含发送记录、接收人列表、每个人的阅读状态
- 发送失败显示具体错误信息,方便排查问题
5. 消息业务分类支持
我们增加了消息业务类型管理,你可以给不同业务的消息分类管理:
- 订单通知分类
- 营销短信分类
- 验证码分类
- 系统通知分类
方便后续统计和分析。
架构设计
消息渠道抽象
ForgeAdmin 的消息模块采用了渠道抽象设计,定义了统一的 MessageChannel 接口:
public interface MessageChannel {
/**
* 获取渠道类型
*/
ChannelType getChannelType();
/**
* 发送消息
*/
MessageSendResult send(Message message, Receiver receiver);
}
目前已经实现了三个渠道:
WebMessageChannel- 站内信SmsMessageChannel- 短信(基于 sms4j)EmailMessageChannel- 邮件
如果你需要增加其他渠道(比如微信推送、钉钉推送),只需要实现这个接口,注册到 Spring 容器中就可以自动加载,非常方便。
配置化管理 vs 硬编码
和其他框架不同,ForgeAdmin 的短信和邮件配置都存在数据库中,你可以在后台界面随时修改配置,不需要重启服务:
public interface SmsConfigProvider {
/**
* 获取当前可用的短信配置
*/
List<SmsConfig> getAllConfigs();
/**
* 获取默认短信配置
*/
SmsConfig getDefaultConfig();
/**
* 根据ID获取配置
*/
SmsConfig getConfigById(Long configId);
}
这种设计的好处:
- ✨ 支持多租户,每个租户可以配置自己的短信账号
- ✨ 随时修改配置,不需要重启应用
- ✨ 支持多个账号同时使用,不同业务不同账号
- ✨ 权限控制,可以让不同管理员管理不同配置
当然如果你喜欢传统的配置文件方式,也可以在 application.yml 中配置,系统会自动加载。
快速开始
1. 配置短信
在 application.yml 中配置默认短信(可选):
sms:
# 默认短信配置
default:
# 短信服务商:aliyun/tencent/huawei etc.
provider: aliyun
# 访问Key ID
accessKeyId: your-access-key-id
# 访问Key Secret
accessKeySecret: your-access-key-secret
# 默认签名
signature: your-signature
或者在后台界面添加短信配置,更灵活。
2. 发送短信
代码非常简单:
@Autowired
private MessageClient messageClient;
// 发送验证码
public void sendCode(String phone, String code) {
Message message = Message.builder()
.channel(ChannelType.SMS)
.to(phone)
.templateCode("SMS_123456789") // 模板码
.templateParam(Map.of("code", code)) // 模板参数
.build();
messageClient.send(message);
}
就是这么简单!sms4j 已经帮你处理好了所有细节。
3. 配置邮件
同样,你可以在 application.yml 中配置,或者在后台界面配置:
email:
default:
host: smtp.qq.com
port: 465
username: your-email@qq.com
password: your-authorization-code
ssl: true
4. 发送邮件
@Autowired
private MessageClient messageClient;
// 发送简单邮件
public void sendSimpleEmail(String to, String subject, String content) {
Message message = Message.builder()
.channel(ChannelType.EMAIL)
.to(to)
.title(subject)
.content(content)
.build();
messageClient.send(message);
}
为什么要做这个功能?
做中后台系统,短信和邮件基本上是刚需:
- 用户注册需要验证码
- 订单通知需要短信提醒
- 营销活动需要群发邮件
- 系统告警需要邮件通知
但是很多框架要么不支持,要么支持得不好,需要你自己集成,配置很麻烦。
ForgeAdmin 的目标就是开箱即用,你拿来就能用,不需要自己到处找依赖写代码,配置都在后台界面,非常方便。
后续计划
目前消息模块已经完成了核心功能,接下来我们会:
- 增加消息模板管理 - 后台可视化管理消息模板,支持变量替换
- 增加批量发送任务 - 支持批量发送短信邮件,异步处理
- 增加发送统计 - 统计发送成功率、到达率、阅读率
- 增加更多渠道 - 支持微信公众号推送、钉钉推送、企业微信推送
如果你有其他需要的功能,欢迎在 Gitee 上提 Issue。
项目地址
🔗 Gitee: gitee.com/ForgeLab/fo…
如果你觉得这个项目对你有帮助,欢迎 Star 支持一下!
也欢迎大家参与贡献,提交 Issue、PR 都可以,我们一起把这个项目做得更好。
总结
这次更新主要是完善了消息管理模块,整合了 sms4j 短信框架和邮件服务,增加了可视化配置和完整的消息监控,让消息管理变得更简单。
如果你正在寻找一个插件化架构的中后台管理框架,不妨试试 ForgeAdmin,相信你会有不一样的体验。
再次求个 Star 🌟,感谢大家的支持!
#Java #SpringBoot #Vue3 #开源 #中后台 #插件化 #短信 #邮件 #sms4j