ForgeAdmin更新:整合 sms4j 短信服务和邮件服务,消息管理更强大了!

0 阅读6分钟

大家好,今天很高兴和大家分享 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);
}

目前已经实现了三个渠道:

  1. WebMessageChannel - 站内信
  2. SmsMessageChannel - 短信(基于 sms4j)
  3. 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 的目标就是开箱即用,你拿来就能用,不需要自己到处找依赖写代码,配置都在后台界面,非常方便。


后续计划

目前消息模块已经完成了核心功能,接下来我们会:

  1. 增加消息模板管理 - 后台可视化管理消息模板,支持变量替换
  2. 增加批量发送任务 - 支持批量发送短信邮件,异步处理
  3. 增加发送统计 - 统计发送成功率、到达率、阅读率
  4. 增加更多渠道 - 支持微信公众号推送、钉钉推送、企业微信推送

如果你有其他需要的功能,欢迎在 Gitee 上提 Issue。


项目地址

🔗 Gitee: gitee.com/ForgeLab/fo…

如果你觉得这个项目对你有帮助,欢迎 Star 支持一下!

也欢迎大家参与贡献,提交 Issue、PR 都可以,我们一起把这个项目做得更好。


总结

这次更新主要是完善了消息管理模块,整合了 sms4j 短信框架和邮件服务,增加了可视化配置和完整的消息监控,让消息管理变得更简单。

如果你正在寻找一个插件化架构的中后台管理框架,不妨试试 ForgeAdmin,相信你会有不一样的体验。

再次求个 Star 🌟,感谢大家的支持!

#Java #SpringBoot #Vue3 #开源 #中后台 #插件化 #短信 #邮件 #sms4j