目录

  • 一、设计内容
  • 二、所用到的知识
  • 三、需求分析
  • 四、运行效果
    • 1、登录与注册
    • 2、信息管理
    • 3、邮件发送与收取
  • 五、部分核心代码
    • 1、SendServlet.java(实现邮件发送)
    • 2、ReceiveServlet.java(实现邮件收取)
  • 六、原理解析
    • 1、如何实现邮件的发送
    • 2、如何实现邮件的读取
    • 3、与公网邮箱的绑定
  • 七、资源下载与学习
    • 1、源码文件
    • 2、设计报告
    • 3、模块设计图(visio设计)
  • 联系作者

一、设计内容

基于SMTP协议,编写程序模拟邮件系统收发邮件的运行过程。要求具有如下功能:
1、 用户能够注册,登录;
2、 用户能够注册;
3、 用户登录后
 查看并编辑用户注册信息;
 可以发信给其它用户,可以连上公网,给公网任何邮箱发邮件(如QQ邮箱);
 查看来信,对来信进行回复;
 可以收取来信中的附件,并存储到计算机上;

二、所用到的知识

IDE:Eclipse
数据库:mysql
技术:Servlet+Jsp+mybatis+javamail
协议:SMTP实现邮件发送,POP3实现邮件收取

三、需求分析

模拟邮箱系统主要分为注册、登录、查看和更改个人注册信息、发送邮件、查看收件箱五大模块。用户注册并登录后,可查看个人注册信息、修改个人信息、绑定自己的公网邮箱后,可以向任意邮箱发送邮件、可以查看自己的收件箱

四、运行效果

1、登录与注册


输入用户名和密码进行登录。若密码错误则显示


或者注册新的用户名和密码

2、信息管理

登录后显示:

点击注册信息,可以填写或者更改个人信息

3、邮件发送与收取

发送邮件,可支持向公网所有邮箱发送邮件

五、部分核心代码

代码结构:

1、SendServlet.java(实现邮件发送)

public static void send_email(String toEmail,String subjects,String contents,String myaddress,String myauthenticator2) throws IOException, AddressException, MessagingException{// 收件人地址,邮件主题,邮件内容,发件人地址,发件人邮箱授权码String to = toEmail;String subject = subjects;String content = contents;      String myaddress1 = myaddress;String myauthenticator1 = myauthenticator2;Properties properties = new Properties();properties.put("mail.smtp.host", "smtp.qq.com");//邮件服务器主机名properties.put("mail.smtp.port", "25");//端口号properties.put("mail.smtp.auth", "true");   //发送服务器需要身份验证   Authenticator authenticatorTemp = new Email_Authenticator(myaddress1, myauthenticator1);javax.mail.Session sendMailSession = javax.mail.Session.getDefaultInstance(properties, authenticatorTemp);MimeMessage mailMessage = new MimeMessage(sendMailSession);mailMessage.setFrom(new InternetAddress(myaddress1));      // Message.RecipientType.TO属性表示接收者的类型为TOmailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));mailMessage.setSubject(subject, "UTF-8");mailMessage.setSentDate(new Date());     // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象Multipart mainPart = new MimeMultipart();      // 创建一个包含HTML内容的MimeBodyPartBodyPart html = new MimeBodyPart();html.setContent(content.trim(), "text/html; charset=utf-8");mainPart.addBodyPart(html);mailMessage.setContent(mainPart);Transport.send(mailMessage);}

2、ReceiveServlet.java(实现邮件收取)

String username = (String)request.getSession().getAttribute("username");User user  =getUserByUsername(username);String address = user.getAddress();//邮箱地址String authenticator = user.getAuthenticator();//邮箱授权码String host = "pop.qq.com";//访问邮件服务器pop.qq.comString protocol = "pop3";//使用pop3协议Properties props = new Properties();// 使用的协议(JavaMail规范要求)props.setProperty("mail.store.protocal", protocol);// 发件人的邮箱的 SMTP服务器地址props.setProperty("mail.pop3.host", host);// QQ邮箱,设置SSL加密(必须要加密)MailSSLSocketFactory sf = null;try {sf = new MailSSLSocketFactory();} catch (GeneralSecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();}sf.setTrustAllHosts(true);props.put("mail.pop3.ssl.enable", "true");props.put("mail.pop3.ssl.socketFactory", sf);// 获取默认session对象Session session = Session.getDefaultInstance(props);session.setDebug(false);// 获取Store对象Store store = null;try {store = session.getStore(protocol);} catch (NoSuchProviderException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 通过POP3服务器的登陆认证try {store.connect(host, address, authenticator);} catch (MessagingException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 获得收件箱Folder folder = null;try {folder = store.getFolder("INBOX");} catch (MessagingException e) {// TODO Auto-generated catch blocke.printStackTrace();}//设置邮件状态try {folder.open(Folder.READ_WRITE);} catch (MessagingException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}// 打开收件箱

六、原理解析

1、如何实现邮件的发送

可以与QQ邮箱进行绑定并使用SMTP协议,SMTP协议是简单邮件传输协议,SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。
SMTP协议包括了连接建立、邮件传送和连接释放三个具体过程,建立的是TCP连接,SMTP协议调用TCP协议的25号端口进行监听。

2、如何实现邮件的读取

使用POP3协议,POP3协议提供了一种对邮件消息进行排队的标准机制,这样接收者以后才能检索邮件。
POP3协议也运行在TCP/IP之上,并且在默认端口110上进行监听。
将邮件的主题、发件人、发送时间、邮件大小、邮件正文分别存在数组中,通过Session传值,然后读取。

3、与公网邮箱的绑定

打开公网邮箱页面(如qq邮箱),打开邮箱的POP3/SMTP服务,获取其授权码,将公网邮箱号与授权码填入项目个人信息栏中就可以连接上公网。

七、资源下载与学习

1、源码文件

eclipse工程,导入项目,配置好数据库和相关设置就可以直接运行
计算机网络课程设计:基于SMTP协议的模拟邮件系统

2、设计报告

计算机网络课程设计报告 基于SMTP协议的模拟邮件系统

3、模块设计图(visio设计)

计算机网络课设 模拟邮件系统模块设计图

联系作者

不会配置可以私信我,每天会看私信。(工作q号:2215991436)

基于SMTP协议的模拟邮件系统(计算机网络课程设计)相关推荐

  1. 湖南大学基于SMTP和POP3的邮件系统——计算机网络课设

    基于SMTP和POP3的邮件系统,创新点较多,课设得分很高 这是2022年春季-软件工程19级计算机网络课程设计内容,下方的文档是本项目的需求文档. 本项目的所有代码(安卓端+Web端+服务端)已经完 ...

  2. 湖南大学基于SMTP和POP3的邮件系统课程设计

    这是我们2020年大三下学期计算机网络课程设计做的项目,后期准备开源到github上,这里是我们的课程设文档 1绪论 背景与目的 随着电子邮件作为人们沟通交流的主要工具,在网络中有着广泛的应用.邮件系 ...

  3. 计算机网络课程设计--基于TCP协议网上聊天程序--python实现带图形界面--socket--多线程

                                              基于TCP协议网上聊天程序 引言 21世纪是一个以网络为核心的信息时代,要实现信息化,就必须依靠完善的网络.而随着计 ...

  4. 使用java语言基于SMTP协议手写邮件客户端

    使用java语言基于SMTP协议手写邮件客户端 1. 说明 电子邮件是互联网上常见的应用,他是互联网早期的产品,直至今日依然受到广大用户的喜爱(在中国可能因为文化背景不同,电子邮件只在办公的时候常用) ...

  5. 计算机网络课程设计之基于 IP 多播的网络会议程序

    前言 本实验难点在于环境的配置,尤其是多网卡配置,经过查阅资料和多次小伙伴们测试,最后终于找到问题的根源 问题分析和配置主要放在实验结果与分析栏中 结尾附上指导书的IP多播源码 白嫖容易,创作不易,本 ...

  6. python网络爬虫课程设计题目_山东建筑大学计算机网络课程设计《基于Python的网络爬虫设计》...

    山东建筑大学计算机网络课程设计<基于Python的网络爬虫设计> 山东建筑大学 课 程 设 计 成 果 报 告 题 目: 基于Python的网络爬虫设计 课 程: 计算机网络A 院 (部) ...

  7. 计算机网络模拟校园,计算机网络课程设计-模拟校园网组网实验

    计算机网络课程设计-模拟校园网组网实验 福建农林大学金山学院 信息工程类 课程实习报告 课程名称: 计算机网络 实习题目: 校园网组网方案 姓 名: 严夫 系: 信息与机电工程系 专 业: 计算机科学 ...

  8. 计算机网络模拟校园,计算机网络课程设计模拟校园网组网实验.doc

    计算机网络课程设计模拟校园网组网实验.doc 福建农林大学 金山 学院 信息工程 类 课程实习报告 课程名称: 计算机网络 实习题目: 校园网组网方案 姓 名: 严夫 系: 信息与机电工程系 专 业: ...

  9. 基于SMTP协议的电子邮件客户端程序

    基于SMTP协议的电子邮件客户端程序 电子邮件的完整传输过程: ​ 发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA ...

最新文章

  1. 【直播】李祖贤:集成学习答疑直播之五 -- 常用集成思路
  2. 2021年第十六届全国大学生智能汽车竞赛线上比赛的广东、山东赛区赛道铺设规范
  3. 闭关修炼——two——struts2
  4. Angular 一个简单的指令实现 阻止事件扩散
  5. linux下的tmpfs目录重启后文件全部消失
  6. 感谢球,感谢铁道部,感谢电信,我终于定到回武汉的票了
  7. python 打印表格边框_python设置表格边框的具体方法
  8. 防止SQL注入式攻击的笔记
  9. ProjectFileManager 发布!项目文件管理效率提升10倍以上!
  10. jQuery源码解析(3)—— ready加载、queue队列
  11. QT 在最新版mac下无法显示变量的问题处理
  12. 武汉月薪1万5,感到焦虑怎么办?
  13. Java FileInputStream
  14. 数据结构Huffman树及编码
  15. linux c 调用 java_Java如何调用C代码–(Linux下实现Java本地方法) | 学步园
  16. python - 安装/解释器/变量
  17. linux内核源码分析之虚拟内存映射
  18. matplotlib绘制树形图之基本配置——万能模板案例
  19. 电商风控赛事亚军方案分享!
  20. 计算机里的word怎么重装,word能卸载重装吗 word卸载重装

热门文章

  1. 《NASA对N+3代先进飞行器概念设计最终报告》阅读笔记
  2. MFC CListCtrl右键菜单
  3. 惠普服务器更改系统,惠普完善服务器操作系统环境
  4. SPSS 方差分析 两因素 无交互项
  5. Dbvisualizer 连接 Phoenix
  6. python的api是什么意思_python中api的使用方法是什么
  7. 1025 偏僻的小路
  8. 在Linux桌面条件下打开Terminal的快捷键
  9. 单工、半双工与全双工
  10. AI人脸识别图片对比