作者主页:夜未央5788

简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

本项目为基于SSM的邮件收发管理系统;

用户角色包含以下功能:

用户登录,写信给好友,查看收件箱,查看已发送的邮件,草稿箱查看,通讯录设置,个人资料管理等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;

5.数据库:MySql 5.7版本;

6.是否Maven项目:否;

技术栈

1. 后端:Spring+SpringMVC+Mybatis

2. 前端:JSP+CSS+JavaScript+jQuery

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中config/db.properties配置文件中的数据库配置改为自己的配置;

4. 运行项目,输入localhost:8080/xx 登录

运行截图

相关代码

Email控制器

package com.email.controller.email;import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;import com.email.po.Email;
import com.email.po.EmailId;
import com.email.po.Save;
import com.email.po.User;
import com.email.service.EmailService;
import com.email.service.SaveService;
import com.email.service.UserService;import sun.security.provider.MD5;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.UUID;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;@Controller
@RequestMapping("/email")
public class EmailController {@Autowiredprivate EmailService emailService;@Autowiredprivate SaveService saveService;@Autowiredprivate UserService userService;@RequestMapping(value="/upload/{type}",method=RequestMethod.POST)public String upLoad(Email email,Save save,String userid,HttpServletRequest request,HttpSession session,@PathVariable Integer type,@RequestParam(value="file") MultipartFile pic) {User u = (User)session.getAttribute("user");if(u==null)return "login";//检查收件人地址是否为空if(email.getAddresserId()==null||email.getAddresserId().trim().equals("")) {request.setAttribute("error", "请输入收件人邮箱");return "send";}//检查收件人地址是否存在boolean flag = userService.checkItExist(userid);if(flag==true) {request.setAttribute("error", "该收件人不存在!");return "send";}if(email.getTitle()==null||email.getTitle().trim().equals("")) {request.setAttribute("error", "主题填写不完整!");return "send";}String originalFileName;String path;if(pic==null||pic.getSize()==0) {originalFileName = "无附件";path = "";}else {//获取文件的原始名称originalFileName = pic.getOriginalFilename();//上传文件,返回的path是存放在服务器中的文件路径path = upLoadFile(pic);//所有检验完毕后把email信息填写完整之后添加到数据库   }if(type==0) {Date date=new Date();email.setAddresseeId(u.getUserid());email.setTime(date);email.setFilename(originalFileName);email.setFilepath(path);//获取IDint id = emailService.getTheLastId();email.setId(id);email.setReaded(0);emailService.addMail(email);}else {Date date=new Date();save.setAddresseeId(u.getUserid());save.setTime(date);save.setFilename(originalFileName);save.setFilepath(path);//获取IDint id = saveService.getTheLastId();save.setId(id);save.setReaded(0);saveService.addSave(save);}request.setAttribute("success", "操作成功!");request.setAttribute("email", null);request.setAttribute("save", null);return "send";}//附件上传方法public String upLoadFile(MultipartFile file){String path = null;//首先获取文件原始名称,目的在于获取上传文件的后缀名String originalName = file.getOriginalFilename();//获取文件后缀名,要求是png、jpg、gif、jpegString suffix = originalName.substring(originalName.lastIndexOf('.'));if(suffix.equalsIgnoreCase(".bat")||suffix.equalsIgnoreCase(".exe")){return null;}//创建新的文件名String newFileName = UUID.randomUUID()+originalName.substring(originalName.lastIndexOf('.'));SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");File f;//设置路径//创建文件夹路径,创建的文件夹路径有级数限制。注意path = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)+"/file/"+sdf.format(new Date())+"\\";File pat = new File(path);pat.mkdirs();path = path+newFileName;f = new File(path);try {file.transferTo(f);} catch (Exception e) {e.printStackTrace();}return "/file/"+sdf.format(new Date())+"/"+newFileName;}/** 该方法用来查看我的收件箱* * */@RequestMapping("/myReceive/{userid}")public String myReceive(HttpSession session,HttpServletRequest request,@PathVariable String userid) {//检查用户是否已经注销,或者浏览器已清除用户缓存,如果清除,则需要重新登录User u = (User)session.getAttribute("user");if(u==null)return "login";System.out.println(userid);//获取指定收件人的所有邮件List<Email> list = emailService.selectByErId(userid+".com");List<Email> finalList = new ArrayList<Email>();for (Email email : list) {if(email.getReaded()!=2) {finalList.add(email);}}//按已读和未读来排序,未读的优先显示finalList.sort(new Comparator<Email>() {public int compare(Email o1, Email o2) {return o1.getReaded()-o2.getReaded();}});request.setAttribute("emails", finalList);return "receiveEmail";}/** 该方法完成邮件查看的功能* * */@RequestMapping(value="/look/{id}",method=RequestMethod.GET)public String look(@PathVariable int id,HttpSession session,HttpServletRequest request) {//检查用户是否已经注销,或者浏览器已清除用户缓存,如果清除,则需要重新登录User u = (User)session.getAttribute("user");if(u==null)return "login";Email email = emailService.getEmailById(id);request.setAttribute("email", email);return "email_info";}/**  完成下载附件的功能。也就是当用户查看邮件时可以点击下载* * */@RequestMapping(value="/downloadFile/{id}",method=RequestMethod.GET)public void downloadFile(HttpServletRequest request,HttpServletResponse response,@PathVariable int id) throws IOException {Email email=emailService.getEmailById(id);File file = new File(Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)
+"/"+email.getFilepath());System.out.println(file.getAbsolutePath());//如果文件不存在if(!file.exists()){response.setCharacterEncoding("UTF-8");//则向前台报告文件已被删除response.getWriter().println("<script type='text/javascript'>alert('file has been delete!')</script>");return;}//处理文件名,用真实的文件名导出String realname=email.getFilename();//设置响应头,控制浏览器下载该文件response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));//读取要下载的文件,保存到文件输入流FileInputStream in = new FileInputStream(file);//创建输出流OutputStream out = response.getOutputStream();//创建缓冲区byte buffer[] = new byte[1024];int len = 0;//循环将输入流中的内容读取到缓冲区当中while((len=in.read(buffer))>0){//输出缓冲区的内容到浏览器,实现文件下载out.write(buffer, 0, len);}}//按条件查询满足条件的邮件/** 1.发件人* 2.标题* 3.未读、已读* * */@RequestMapping("/select/{userid}")public String select(Email email,HttpServletRequest request,@PathVariable String userid) {List<Email> list = emailService.selectByOptions(email,(userid+".com"));request.setAttribute("emails", list);return "receiveEmail";}//查看自己的发件箱,userid是自己的邮箱账号@RequestMapping("/send/{userid}")public String send(HttpServletRequest request,@PathVariable String userid) {//获取自己以往所有发送过的邮件,查询条件是根据自己的邮箱账号。List<Email> list = emailService.selectByEeId(userid+".com");for (Email email : list) {System.out.println(email.getTitle());}List<Email> finalList = new ArrayList<Email>();for (Email email : list) {if(email.getReaded()!=3&&email.getReaded()!=4) {finalList.add(email);}}request.setAttribute("emails", finalList);return "sendEmails";}/** 该方法用来删除指定的(收件)邮件,* 这里有要注意的地方,因为邮件是一份的,且是发件人和收件人共享的,如果直接执行删除数据库中的操作,那么势必会影响另一方,* 这里的处理方法是利用邮件的readed字段来进行处理,readed字段值为0时表示未读,1表示已读,2表示收件人删除,3表示发件人* 删除且邮件未读,4表示发件人删除且邮件已读* */@RequestMapping("reDelete/{id}")public String reDelete(HttpServletRequest request,@PathVariable String id) {//调用service里的delete方法。emailService.reDelete(Integer.parseInt(id));//获取指定收件人的所有邮件User currentUser  = (User)request.getSession().getAttribute("user");String userid = currentUser.getUserid();List<Email> list = emailService.selectByErId(userid);List<Email> finalList = new ArrayList<Email>();for (Email email : list) {if(email.getReaded()!=2) {finalList.add(email);}}//按已读和未读来排序,未读的优先显示finalList.sort(new Comparator<Email>() {public int compare(Email o1, Email o2) {return o1.getReaded()-o2.getReaded();}});request.setAttribute("emails", finalList);return "receiveEmail";}/** 该方法用来删除指定的(发件)邮件* */@RequestMapping("seDelete/{id}")public String seDelete(HttpServletRequest request,@PathVariable int id) {//调用service里的delete方法。emailService.sedelete(id);//获取指定发件人的所有邮件User currentUser  = (User)request.getSession().getAttribute("user");String userid = currentUser.getUserid();List<Email> list = emailService.selectByEeId(userid);List<Email> finalList = new ArrayList<Email>();for (Email email : list) {if(email.getReaded()!=3&&email.getReaded()!=4) {finalList.add(email);}}//按已读和未读来排序,未读的优先显示finalList.sort(new Comparator<Email>() {public int compare(Email o1, Email o2) {return o1.getReaded()-o2.getReaded();}});request.setAttribute("emails", finalList);return "sendEmails";}//设置邮件为已读@RequestMapping("/setReaded/{id}")public String setReaded(HttpServletRequest request,@PathVariable int id) {emailService.setEmailReaded(id);//获取指定收件人的所有邮件User currentUser  = (User)request.getSession().getAttribute("user");String userid = currentUser.getUserid();List<Email> list = emailService.selectByErId(userid);List<Email> finalList = new ArrayList<Email>();for (Email email : list) {if(email.getReaded()!=2) {finalList.add(email);}}//按已读和未读来排序,未读的优先显示finalList.sort(new Comparator<Email>() {public int compare(Email o1, Email o2) {return o1.getReaded()-o2.getReaded();}});request.setAttribute("emails", finalList);return "receiveEmail";}//批量删除收件箱@RequestMapping("/reListdel")public String ids(HttpServletRequest request,EmailId ids) {List<Integer> list = ids.getId();emailService.listDelete(list);//获取指定收件人的所有邮件User currentUser  = (User)request.getSession().getAttribute("user");String userid = currentUser.getUserid();List<Email> alllist = emailService.selectByErId(userid);List<Email> finalList = new ArrayList<Email>();for (Email email : alllist) {if(email.getReaded()!=2) {finalList.add(email);}}//按已读和未读来排序,未读的优先显示finalList.sort(new Comparator<Email>() {public int compare(Email o1, Email o2) {return o1.getReaded()-o2.getReaded();}});request.setAttribute("emails", finalList);return "receiveEmail";}//批量删除发件箱@RequestMapping("/seListdel")public String seListdel(HttpServletRequest request,EmailId ids) {List<Integer> list = ids.getId();emailService.seListDelete(list);//获取指定发件人的所有邮件User currentUser  = (User)request.getSession().getAttribute("user");String userid = currentUser.getUserid();List<Email> alllist = emailService.selectByEeId(userid);List<Email> finalList = new ArrayList<Email>();for (Email email : alllist) {if(email.getReaded()!=3&&email.getReaded()!=4) {finalList.add(email);}}//按已读和未读来排序,未读的优先显示finalList.sort(new Comparator<Email>() {public int compare(Email o1, Email o2) {return o1.getReaded()-o2.getReaded();}});request.setAttribute("emails", finalList);return "sendEmails";}//转发路由@RequestMapping("/transmit/{id}")public String transmit(HttpServletRequest request,@PathVariable int id) {request.setAttribute("id", id);return "transmit";}//转发邮件@RequestMapping("/toTrans")public String toTrans(HttpServletRequest request,int id,String userid) {Email email = emailService.getEmailById(id);email.setAddresserId(userid);int lastId = emailService.getTheLastId();email.setId(lastId);email.setReaded(0);emailService.addMail(email);request.setAttribute("msg", "转发成功!");return "transmit";}
}

FriendController

package com.email.controller.friend;import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;import org.apache.poi.hslf.dev.SlideAndNotesAtomListing;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;import com.email.po.Email;
import com.email.po.Friend;
import com.email.po.User;
import com.email.service.FriendService;
import com.email.service.UserService;@Controller
@RequestMapping("/friend")
public class FriendController {@Autowiredprivate FriendService friendService;@Autowiredprivate UserService userService;//查看我的通讯录@RequestMapping("/myfriend/{userid}")public String myfriend(HttpServletRequest request,@PathVariable String userid) {List<Friend> list = friendService.getAllFriends(userid+".com");request.setAttribute("friends", list);return "friend";}//添加朋友@RequestMapping("/add")public String add(HttpServletRequest request,HttpSession session,String friendId) {User user = (User)session.getAttribute("user");List<Friend> lists = friendService.getAllFriends(user.getUserid());for (Friend friend : lists) {if(friend.getFriendId().equals(friendId)) {request.setAttribute("error", "该用户已经存在通信录中!请勿重新添加");List<Friend> list = friendService.getAllFriends(user.getUserid());request.setAttribute("friends", list);return "friend";}}Friend friend = new Friend();friend.setUserid(user.getUserid());friend.setFriendId(friendId);User fri = userService.getUserByUserid(friendId);if(fri==null) {List<Friend> list = friendService.getAllFriends(user.getUserid());request.setAttribute("error", "您要添加的用户不存在!");request.setAttribute("friends", list);return "friend";}friend.setFriendName(fri.getUsername());friendService.add(friend);List<Friend> list = friendService.getAllFriends(user.getUserid());request.setAttribute("success", "添加成功!");request.setAttribute("friends", list);return "friend";}//删除通讯录好友@RequestMapping("/delete/{friendId}")public String delete(HttpServletRequest request,HttpSession session,@PathVariable String friendId) {User user = (User)session.getAttribute("user");friendService.delete(friendId+".com");List<Friend> list = friendService.getAllFriends(user.getUserid());request.setAttribute("friends", list);return "friend";}//给朋友写信,带着朋友信息跳转到写信页面@RequestMapping("/write/{friendId}")public String write(HttpServletRequest request,@PathVariable String friendId) {Email email = new Email();email.setAddresserId(friendId+".com");request.setAttribute("save", email);return "send";}
}

SaveController

package com.email.controller.save;import java.util.List;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;import com.email.mapper.SaveMapper;
import com.email.po.Save;
import com.email.po.User;
import com.email.service.SaveService;@Controller
@RequestMapping("/save")
public class SaveController {@Autowiredprivate SaveService saveService;@Autowiredprivate SaveMapper saveMapper;//查看我的草稿箱@RequestMapping("/mySave/{userid}")public String mySave(HttpServletRequest request,@PathVariable String userid) {List<Save> list = saveService.selectByEE(userid+".com");request.setAttribute("saves", list);return "save";}//查看草稿箱具体邮件内容@RequestMapping("/look/{id}")public String look(HttpServletRequest request,@PathVariable int id) {Save save = saveService.selectBySaveId(id);request.setAttribute("save", save);return "send";}//查看草稿箱具体邮件内容@RequestMapping("/reDelete/{id}")public String reDelete(HttpServletRequest request,@PathVariable int id) {saveMapper.deleteByPrimaryKey(id);User currentUser  = (User)request.getSession().getAttribute("user");String userid = currentUser.getUserid();List<Save> list = saveService.selectByEE(userid);request.setAttribute("saves", list);return "save";}
}

如果也想学习本系统,下面领取。关注并回复:162ssm

Java项目:SSM邮件收发管理系统相关推荐

  1. 基于java项目ssm二手书交易平台设计与实现(论文+程序设计源码+数据库文件)

    1 绪论 4 1.1 项目开发背景 4 1.2 项目开发意义 5 1.3 项目主要的内容 5 2 相关技术介绍及系统环境开发条件 6 2.1相关技术介绍 6 2.2系统环境开发条件 7 3 系统的需求 ...

  2. Java项目01-菜谱管理系统控制台实现

    Java项目01-菜谱管理系统控制台实现: 源代码及展示视频请到资源处下载,也可私聊本人提供免积分百度云下载,另外后续还有Java Swing+数据库实现的界面项目哦! 系统主界面: Java Swi ...

  3. 完成我的第一个java项目“评标人才库管理系统”——环境配置+创项目

    完成我的第一个java项目"评标人才库管理系统"--环境配置+创项目 idea配置maven环境 创建第一个Spring项目 idea配置maven环境 1.下载maven htt ...

  4. Java项目实战---歌曲管理系统

    Java项目实战-歌曲管理系统 声明:本人仅整理了代码,方便大家进行调试优化,功能上还存在很多纰漏,欢迎大家评论区讨论 代码原地址放于文章末尾 一.实验目的: 掌握类的定义,JAVA应用程序的设计与实 ...

  5. Java项目ssm企业工资管理系统源码

    Java版ssm企业工资管理系统,源码免费分享,需要可私信. 项目技术:jsp+mysql+Spring+mybatis 运行环境:最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论 ...

  6. Java项目:汽车配件销售管理系统(java+SpringBoot+layui+html+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 本项目为后台管理系统, 主要功能包括: 公告增删改查,用户管理,登录页面,订单查询,配件添加等等 环境需要 1.运行环境:最好是j ...

  7. Java项目:智能小区物业管理系统(java+JSP+bootstrap+JavaScript+servlet+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目为后台管理系统,分为管理员与业主两种角色: 管理员主要功能包括: 首页.公告查询.修改密码.报修管理.业主信息.房产信息 ...

  8. Java项目-SSM实现完整的BBS论坛

    作者主页:编程指南针 简介:Java领域优质创作者.CSDN博客专家  Java项目.简历模板.学习资料.面试题库.技术互助 文末获取源码 项目编号:BS-PT-002 这个论坛功能开发的比较完整,论 ...

  9. java基于ssm酒吧管理系统

    基于ssm酒吧管理系统 #### 开发工具(eclipse/idea): eclipse4.5/4.8或者idea2018,jdk1.8 * * * (1)顾客下单:顾客下单主要包括商品推荐,订单确认 ...

最新文章

  1. wxWidgets:wxRibbonGallery类用法
  2. 【渝粤题库】国家开放大学2021春3979会计学概论题目
  3. turbo c填充图形_C / C ++中的图形:Turbo C编译器中的简介和图形模式
  4. js解码编码decodeURI与decodeURIComponent区别
  5. 改进了一下这个游戏的输出及思路,是不是好玩多了??:)
  6. ubuntu14.04(server amd64)免密码sudo
  7. doubanactivity_android activity堆栈创建与查找
  8. 单片机C语言关键字之extern
  9. 第20届上海大学程序设计联赛春季赛(同步赛)
  10. 5、设备树操作reg
  11. 番外篇 之 Win32Api
  12. 第一阶段:JAVA快速入门
  13. 怎么在excel中导入ChemDraw结构图
  14. 基于近端策略优化的阻变存储硬件加速器自动量化
  15. 如何在PC上下载腾讯课堂视频?
  16. 教你用PS制作创意分割海报,让海报更有新意
  17. IE能够打开网页 可是chrome和火狐打不开网页解决的方法
  18. 《情绪障碍跨诊断治疗的统一方案自助手册》读书摘录
  19. 最初的梦想 美雪~玮琪
  20. 为智能家居赋能,雄迈信息发布4G消费类安防模组

热门文章

  1. 高斯消元+叉积求面积+记忆化搜索
  2. 【iPad生产力】下载这几个APP让你的iPad分分钟变身宝藏
  3. 【京东电商网站主界面仿写——HTML第八部分】
  4. C语言中1UL表示什么意思?
  5. 类与对象练习题(三)---Array/Person类
  6. 2021-2027全球与中国纯电动汽车 (BEV) 中的电容器市场现状及未来发展趋势
  7. 软件开发工作会在35-40岁走入死胡同吗?
  8. 2021 [线下]陇剑杯 wp
  9. Verilog基础入门
  10. rtx3080ti显卡发售时间 售价999美元