没有合适的资源?快使用搜索试试~ 我知道了~
首页NetBeans开发邮件系统课程设计
NetBeans开发邮件系统课程设计
5星 · 超过95%的资源 需积分: 9 19 下载量 67 浏览量
更新于2023-03-03
评论
收藏 206KB DOC 举报
在NetBean平台上,运用java高级编程语言在网络方面的强大功能实现邮件客户端;通过实验更加熟悉NetBean编程平台,掌握java网络编程的基本方法和技巧,掌握邮件系统的基本原理。适用于课程软件系统开发,大家共同学习!
资源详情
资源评论
资源推荐
一、实验目的
在 NetBean 平台上,运用 java 高级编程语言在网络方面的强大功能实现
邮件客户端;通过实验更加熟悉 NetBean 编程平台,掌握 java 网络编程的基
本方法和技巧,掌握邮件系统的基本原理。
题目分析:
邮件客户端,顾名思义,就是运行此客户端程序可以用来收、发电子邮件。
基本思想是利用网络中现有的 SMTP 和 POP3 服务器来处理网络中交互的邮件,
客户端程序发送命令控制服务器的行为,实现邮件的发送和接收;本实验采用
的是底层的实现,首先与 SMTP 和 POP3 服务器建立 Socket 连接,SMTP 连
接到 25 端口,POP3 服务器连接到 110 端口,然后从相应端口取得流,即操
控具体的字节流,从中发送或读取数据。具体内容是:客户端编辑邮件及附件,
向 SMTP 服务器发送相关命令,SMTP 服务器从客户端处得到源文件,并经过
适当的加密等处理,发送到相应的接收端;同时客户端还可以从 POP3 服务器
中收邮件,也是向 POP3 服务器发送控制信息,POP3 服务器会返回所需信息。
服务器返回的信息一般都进过加密处理,因此客户端还要进行解码,才能
得到正确的信息。从试验统计分析看,当前的加密方法都是“ Base64”编码;
NetBean 中含有系统解码方法,可以直接调用。
邮件客户端不仅要完成基本的收、发邮件的要求,还应该能发送和接收附
件,因为很多文件是不能在文本编辑窗口直接发送的;附件内容包括文本文件、
图片、视频等,邮件客户端从服务器得到附件内容后保存到当前目录中(也可
以“另存为”到其他目录下)。
二、实验内容及要求
Email 客户端应该能够实现已注册用户的登录,退出,电子邮件的编辑,
发送,接收,显示,回复,转发,删除;附件的发送,接收,阅读等。图形界
面使操作,使用更加方便。
功能模块图:
?
SMTP
Server
已注册用户登录
文
本
信
息
附件信息
POP3
Server
网络
邮
件
信
息
附件信息
回复
1
注:图中灰色部分为本次实验所做的客户端部分,其他为网络条件,即在 SMT
P 和 POP3 服务器之上进行编程,实现邮件客户端的功能。
主要功能模块开发过程:
1、用户登录模块:
由于有两个服务器:SMTP 和 POP3,原则上应该有两个登录界面,考虑到
简化,只设置一个登录界面,即只登录到 POP3 服务器,然后一直与其保持连
接,直到用户退出为止;每次发送邮件时才登录 SMTP 服务器,不需要设置单
独的登录界面,待发送完毕之后即关闭与 SMTP 服务器的连接。用户名是事先
已经注册过的并能使用 POP3 服务的邮箱用户名,密码即注册时的真实密码。
首先在 POP3 服务器的 110 端口建立 Socket 连接,从服务器得到输入流,客
户端向服务器发出含有控制命令的输出流。向服务器发送的第一条命令是用户
名,格式为:user “mailbox”,若服务器验证有此用户,则会返回“+OK”,否
则返回“-ERR”;接下来要发送密码验证,格式为:pass “password”,若用
户名和密码验证符合,则返回“+OK”,否则返回“-ERR 登陆失败, 请检查用户
SMTP
Server
已注册用户登录
文
本
信
息
附件信息
POP3
Server
网络
邮
件
信
息
附件信息
回复
2
名和密码。 Login failed”,这些信息当然用户是不可见的,用户看到的是在
密码输入错误后登录界面弹出对话框,提示“用户名或密码错误!请重新输
入!”;用户登录后当前登录界面消失,出现收信和发信面板。
2、发信模块:
基于底层的 Socket 连接,首先与 SMTP 服务器的 25 端口建立连接,从服
务器处得到输入流和输出流,即客户端可以向服务器发送命令信息,以控制服
务器的行为。这种建立连接的行为在每次发信时都要进行,发信完毕后断开连
接。命令分别为:HELO<SP><domain><CRLF>,与 SMTP 服务器握手,
传送本机域名,若正确可得到返回信息“250 smtp.qq.com”;AUTH LOGIN
用来 获得身份验证许可,返回的正确信息为“334 VXNlcm5hbWU6”, 明文
为 Username,即用户名;然后发送经过 base64 加密过的用户名,验证正确
则返回“334 UGFzc3dvcmQ6” , 明文为 Password,即要求发送密码;发
送 密 码 也 是 经 过 base64 编 码 的 , 若 与 用 户 名 匹 配 则 返 回 “ 235
Authentication successful” ; 接 下 来 就 可 以 输 入 发 件 人 了 , 格 式 为 :
MAIL<SP>FROM:<reverse-path><CRLF>,传送发信者的信箱名称,返
回正确的信息为“250 Ok”;收件人的格式为:RCPT<SP>TO:<forward-
path><CRLF>,传送接收者的信箱名称,返回信息也为“250 Ok”;在以上
步骤 都准确 完成 并得到 正确的 返回 信息后 就可以 正式 发 送数 据 了 ,使用
DATA<CRLF>,发送信件数据(包括信头和信体),服务器会告诉我“354
End data with <CR><LF>.<CR><LF>” , 提 示 信 件 格 式 ;
QUIT<CRLF>,退出与 SMTP 服务器的连接。本实验使用 smtp.qq.com 服
务器,与服务 器 建 立 连 接 后 , 服务 器 会 返 回 “ 220 smtp.qq.com ESMTP
QQMail Ver 2.2” ;但是当我输入不是 smtp.qq.com 的用户时,如输入 163
邮 箱 , 服务 器 会返 回信 息 说 “ 454 Error: authentication failed, system
busy,后续还有返回信息说“Recipient address rejected: Access denied”
和“221 Error: I can break rules, too. Goodbye.;邮件体以“.”结束。输入
“quit”时退出与服务器的连接。
3、收信模块:
收信时无需再与服务器建立连接,因为登录时已经建立连接并一直保持。用
户只要发送相应的请求命令即可从服务器的输入流中得到数据; 为了知道邮箱
中目前有多少封邮件以及这些邮件的大小,可使用 STAT 命令。它会返回邮箱
目前的状态。服务器所返回的信息可能会是下面的样子:+OK 0 0(邮箱中没
有邮件)+OK 3 825(邮箱中有三封邮件,大小为 825 个八位字节);本程序中
并不需要把所有这些信息都显示出来,而是用来控制邮箱的“下一封”功能 。
LIST 命令可用来列出邮件的信息,若 LIST 后不加索引,则将所有邮件一一列
出并显示长度,加索引则显示特定邮件的长度。TOP 命令可用来获取邮件头及
被预定义的一块字符串。通常如果邮箱中中一封容量很大的邮件时,这个命令
3
剩余19页未读,继续阅读
xinfeixiang8
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1