电子邮件接收程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络编程技术
课程设计报告
专
业 计算机科学与技术
信息工程学院
题目:电子邮件接收程序
1. 概述
随着因特网的普及,电子邮件已经成为人们日常工作、生活中必不可少的通信工具。客户端接收邮件时,POP3可以用来读取和保存接收到的邮件,允许客户端连接到服务器并下载所有的邮件到客户机上的邮箱。
这次课程设计是用java语言实现了基于POP3的邮件接收程序,要求能通过POP3邮件服务器接收邮件并查看邮件的属性及标题和内容等,能删除邮件服务器中的邮件。
2. 设计原理
POP3邮件服务器通过侦听TCP端口110提供POP3服务。客户端软件读取邮件之前,需要先与服务器建立TCP连接。连接成功后,POP3服务器会向该客户端发送确认消息。然后客户端根据服务器回送的信息决定下一步的操作。
在POP3协议中,规定的命令只有十几条。每条命令均由命令和参数两部分组成,而且每条命令都以回车换行结束。命令和参数之间空格隔开。POP3命令包含一个大小写无关的关键字和一个或多个参量,所有的命令以
POP3服务器回送的响应信息由一个状态码和一个可能跟有附加消息的字符串组成。状态码有两种:“确定”和“失败”。
客户端每次向POP3服务器发送命令后,都要等待服务器响应,并处理接受的信息,然后再接着发送下一个命令,如此反复多次,一直持续到断开连接。这个过程经历了3个状态:授权(AUTHORIZATION)状态、操作(TRANSACTION)状态和更新(UPDATE)状态。POP3交互过程中的状态转换如图1所示:
图1 POP3的状态转换示意图
POP3交互模型基本原理为:POP3接收者对POP3发送者进行初始化连接,发送者对接收者发送询问指令“READY”,接收者则向发送者提交所要接收数据的要求,发送者做出回应,并发送数据。接收者则开始接收数据。发送者发送完数据后,提出断开请求,并断开连接。数据接收过程完成。POP3交互模型如图2所
示:
图2 POP3交互模型
3. 详细设计及编码
3.1过程中的三个状态 1.授权状态
客户端首先与POP3服务器建立TCP 连接,服务器接收后发送一个单行的确认信息。
假设用C 表示客户端(Client ),S 表示服务器端(Server ),下面是客户端接收邮件前需要与服务器传输的信息。 (1)发送用户名
命令格式:USER<用户名>
该命令将客户的用户名发送到服务器,服务器返回“OK ”表示正确的用户名,“-ERR ”表示错误的用户名。
(2)用户名确认成功后,需要输入密码
命令格式:PASS<密码>
该命令将客户的密码发送给服务器。服务器返回“OK ”表示正确的密码,“-ERR ”表示错误的密码。 2.操作状态
客户端将服务器成功确认了自己的身份后,POP3会话将进入操作状态,然后客户端就可以执行POP3命令进行相应的操作。 (1)STAT 命令
POP3发送者
R E A D Y “Hello ”
“Mail from ” “Rcpt to ” “Data ”(reque st to get)
O K
接 收 数据
Q U I T
断 开 连 接
POP3接收者 初始化连接
命令格式:STAT
该命令从服务器中获取邮件总数和总字节数,服务器响应命令返回邮件总数和总字节数。
(2)LIST命令
命令格式:LIST
该命令从服务器中获得邮件列表和大小。服务器响应命令返回邮件列表和大小。
(3)RETR命令
命令格式:RETR命令
该命令从服务器中获得一个邮件
(4)DELE命令
命令格式:DELE<邮件的序号>
该命令告诉服务器将邮件标记为删除
3.更新状态
当客户在操作状态下发送QUIT命令后,会话进入更新状态。
QUIT命令
命令格式:QUIT
该命令关闭与服务器的连接。
3.2窗体的构建:
使用MVC结构的思想构建一个窗体,其中包括两个按钮一个用于控制显示邮件的各种信息,一个用于控制删除功能,一个文本框用来输入要删除的邮件序号以及一个文本域来显示各方面的信息。
主要代码:
Example.java:
public class Example {
public static void main(String args[]){
WindowTriangle win=new WindowTriangle();
win.setTitle("邮件接收和删除程序");
win.setBounds(100,100,420,260);
}
}
WindowTriangle.java:
public class WindowTriangle extends JFrame implements ActionListener { ReciveOneMail pmm;//模型
JTextField textA; //视图
JTextArea showArea;//视图
JButton controlButton1, controlButton2;//控制器
WindowTriangle() {
init();
setVisible(true);