【开源】SpringBoot框架开发不良邮件过滤系统

本文主要是介绍【开源】SpringBoot框架开发不良邮件过滤系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 系统用户模块
    • 2.2 收件箱模块
    • 2.3 发件箱模块
    • 2.4 垃圾箱模块
    • 2.5 回收站模块
    • 2.6 邮箱过滤设置模块
  • 三、实体类设计
    • 3.1 系统用户
    • 3.2 邮件
    • 3.3 其他实体
  • 四、系统展示
  • 五、核心代码
    • 5.1 查询收件箱档案
    • 5.2 查询回收站档案
    • 5.3 新增邮件的附件
    • 5.4 新增白名单档案
    • 5.5 增改黑名单档案
  • 六、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的不良邮件过滤系统,包含了发件箱、收件箱、垃圾箱、回收站、黑名单、白名单和关键词过滤模块,还包含系统自带的用户管理、班级管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,不良邮件过滤系统基于角色的访问控制,给邮件管理员、普通用户使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

在这里插入图片描述

2.1 系统用户模块

系统用户模块包含了系统登陆用户的档案维护。我们需要建立一个档案来维护用户,包括用户的邮箱地址、发信人名字、手机号、身份证、权限等数据。

在这里插入图片描述

2.2 收件箱模块

收件箱模块包含了系统用户正常收到的所有邮件,用户可以在此模块中查询自己收到的电子邮件。

在这里插入图片描述

2.3 发件箱模块

发件箱模块包含了电子邮件的发送界面,还包括了系统用户历史发送的邮件档案,和未发出的草稿邮件信息。

在这里插入图片描述

2.4 垃圾箱模块

垃圾箱模块包含了系统用户收到的垃圾信息。这些邮件是被用户设置的过滤规则所过滤的邮件档案,用户可以在垃圾箱模块中查询它们。

在这里插入图片描述

2.5 回收站模块

系统用户可以主动删除收到的邮件,用户操作删除后,邮件会自动进入到回收站作为缓冲区。用户如果在可以在回收站再次删除文件,即彻底删除邮件信息。

在这里插入图片描述

2.6 邮箱过滤设置模块

系统用户可以自定义配置适合自己的过滤规则,如设置黑名单防止骚扰,设置白名单避免误伤,设置关键词以便更精确的过滤邮件。

在这里插入图片描述


三、实体类设计

3.1 系统用户

系统用户登录模块管理邮件系统的登录帐户,用户信息包括帐号、性别、手机号码、生日、身份证号码、电子邮件、注册日期、备注等其中,账号是系统用户的决定因素。

在这里插入图片描述

3.2 邮件

发件箱、收件箱、垃圾箱、回收站模块分别是对邮件进行记录并管理,其中邮件的信息包括了邮件的邮件ID、发件人ID、发件人姓名、收件人ID、收件人姓名、邮件标题、邮件内容、附件、备注等,其中邮件ID是邮件的确定性因素。
在这里插入图片描述

3.3 其他实体

黑名单表,用于存储系统用户的黑名单数据,包括的拉黑的规则名称、邮箱地址、生效用户ID和备注信息。
白名单表,用于存储系统用户的白名单数据,包括的拉白的规则名称、邮箱地址、生效用户ID和备注信息。
关键词表,用于存储系统用户的配置的过滤关键词,包括的关键词、生效用户ID这两个字段。


四、系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、核心代码

5.1 查询收件箱档案

@RequestMapping(value = "/getByShouPage", method = RequestMethod.GET)
@ApiOperation(value = "查询收件箱档案")
public Result<IPage<MailArchives>> getByShouPage(@ModelAttribute MailArchives mailArchives ,@ModelAttribute PageVo page){User currUser = securityUtil.getCurrUser();QueryWrapper<MailArchives> qw = new QueryWrapper<>();qw.eq("to_id",currUser.getId());if(!ZwzNullUtils.isNull(mailArchives.getFromUser())) {qw.like("from_user",mailArchives.getFromUser());}if(mailArchives.getStatus() > 0) {qw.eq("status",mailArchives.getStatus() - 1);}qw.ne("status",3);IPage<MailArchives> data = iMailArchivesService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<MailArchives>>().setData(data);
}

5.2 查询回收站档案

@RequestMapping(value = "/getByLaJiPage", method = RequestMethod.GET)
@ApiOperation(value = "查询回收站档案")
public Result<IPage<MailArchives>> getByLaJiPage(@ModelAttribute MailArchives mailArchives ,@ModelAttribute PageVo page){User currUser = securityUtil.getCurrUser();QueryWrapper<MailArchives> qw = new QueryWrapper<>();qw.eq("to_id",currUser.getId());if(!ZwzNullUtils.isNull(mailArchives.getFromUser())) {qw.like("from_user",mailArchives.getFromUser());}qw.eq("status",3);IPage<MailArchives> data = iMailArchivesService.page(PageUtil.initMpPage(page),qw);return new ResultUtil<IPage<MailArchives>>().setData(data);
}

5.3 新增邮件的附件

@RequestMapping(value = "/addFile", method = RequestMethod.GET)
@ApiOperation(value = "新增邮件的附件")
public Result<Object> addFile(@RequestParam String mailId,@RequestParam String fileId){String[] fileSplit = fileId.split("/");File file = iFileService.getById(fileSplit[fileSplit.length - 1]);if(file == null) {return ResultUtil.error("附件文件不存在");}MailArchives mailArchives = iMailArchivesService.getById(mailId);if(mailArchives == null) {return ResultUtil.error("邮件不存在");}MailFile mailFile = new MailFile();mailFile.setFileId(fileId);mailFile.setMailId(mailId);mailFile.setFileSize(file.getSize());mailFile.setTitle(file.getName());iMailFileService.saveOrUpdate(mailFile);return ResultUtil.success();
}

5.4 新增白名单档案

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增白名单档案")
public Result<Whitelist> insert(Whitelist whitelist){if(ZwzNullUtils.isNull(whitelist.getMailAddress())) {return ResultUtil.error("白名单邮箱不能为空");}QueryWrapper<User> userQw = new QueryWrapper<>();userQw.eq("email",whitelist.getMailAddress());User findUser = iUserService.getOne(userQw);if(findUser == null) {return ResultUtil.error("非系统用户邮箱");}whitelist.setMailId(findUser.getId());User currUser = securityUtil.getCurrUser();whitelist.setUserId(currUser.getId());iWhitelistService.saveOrUpdate(whitelist);return new ResultUtil<Whitelist>().setData(whitelist);
}

5.5 增改黑名单档案

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增黑名单档案")
public Result<Blacklist> insert(Blacklist blacklist){if(ZwzNullUtils.isNull(blacklist.getMailAddress())) {return ResultUtil.error("黑名单邮箱不能为空");}QueryWrapper<User> userQw = new QueryWrapper<>();userQw.eq("email",blacklist.getMailAddress());User findUser = iUserService.getOne(userQw);if(findUser == null) {return ResultUtil.error("非系统用户邮箱");}blacklist.setMailId(findUser.getId());User currUser = securityUtil.getCurrUser();blacklist.setUserId(currUser.getId());iBlacklistService.saveOrUpdate(blacklist);return new ResultUtil<Blacklist>().setData(blacklist);
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

这篇关于【开源】SpringBoot框架开发不良邮件过滤系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/827507

相关文章

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格