7电子邮件接收程序
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JOptionPane.WARNING_MESSAGE); } else if (e.getSource() == controlButton2) { showArea.append("delete..............................."+ "\n"); int countOfAll = folder.getMessageCount();//取得邮件个数 int i = (int) Double.parseDouble(textA.getText().trim()); if (i > countOfAll || i < 0) { JOptionPane.showMessageDialog(this, "你输入有误!", "消息对话框",
4
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
void init() { textA = new JTextField(5); showArea = new JTextArea(); controlButton1 = new JButton("显示邮件"); controlButton2 = new JButton("确认"); JPanel pNorth = new JPanel(); pNorth.add(controlButton1); pNorth.add(new JLabel("需删除的序号:")); pNorth.add(textA); pNorth.add(controlButton2); controlButton1.addActionListener(this); controlButton2.addActionListener(this); //controlButton.addActionListener(new ActionListener() { 所有
2. 设计原理
POP3 邮件服务器通过侦听 TCP 端口 110 提供 POP3 服务。客户端软件读取邮 件之前,需要先与服务器建立 TCP 连接。连接成功后,POFra Baidu bibliotek3 服务器会向该客户 端发送确认消息。然后客户端根据服务器回送的信息决定下一步的操作。
在 POP3 协议中,规定的命令只有十几条。每条命令均由命令和参数两部分 组成,而且每条命令都以回车换行结束。命令和参数之间空格隔开。POP3 命令 包含一个大小写无关的关键字和一个或多个参量,所有的命令以<CR><LF>( 回 车换行符)作为其结束标志。关键字和参量必须是非控制符的 ASCII 码字符。关 键字和参量之间,参量和参量之间由一个空格字符分隔开。命令部分由 3 至 4 个字母组成,参数部分最多可达 40 个字符长度。
POP3 服务器回送的响应信息由一个状态码和一个可能跟有附加消息的字符 串组成。状态码有两种:“确定”和“失败”。
客户端每次向 POP3 服务器发送命令后,都要等待服务器响应,并处理接受 的信息,然后再接着发送下一个命令,如此反复多次,一直持续到断开连接。这 个过程经历了 3 个状态:授权(AUTHORIZATION)状态、操作(TRANSACTION)状 态和更新(UPDATE)状态。POP3 交互过程中的状态转换如图 1 所示:
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 {
pmm.getFrom() + "\n"+ "Message " + i + " to: " +
pmm.getMailAddress("to") + "\n"); pmm.setDateFormat("yy 年 MM 月 dd 日 HH:mm"); showArea.append("Message " + i + "发送日期: " +
假设用 C 表示客户端(Client),S 表示服务器端(Server),下面是客户端 接收邮件前需要与服务器传输的信息。 (1)发送用户名
命令格式:USER<用户名> 该命令将客户的用户名发送到服务器,服务器返回“OK”表示正确的用户名, “-ERR”表示错误的用户名。 (2)用户名确认成功后,需要输入密码 命令格式:PASS<密码> 该命令将客户的密码发送给服务器。服务器返回“OK”表示正确的密码, “-ERR”表示错误的密码。 2.操作状态 客户端将服务器成功确认了自己的身份后,POP3 会话将进入操作状态,然 后客户端就可以执行 POP3 命令进行相应的操作。 (1)STAT 命令
int countOfAll = folder.getMessageCount();//取得邮件个数 int unReadCount = folder.getUnreadMessageCount();//已读个数 int newOfCount = folder.getNewMessageCount();//未读个数
ActionListener 的函数定义...}) add(pNorth, BorderLayout.NORTH); add(new JScrollPane(showArea), BorderLayout.CENTER);
} ...... 3.3 查看邮件信息方法以及删除功能的实现
创建一个 ReciveOneMail 的 java 类,在其中实现查看邮件的属性、标题和
showArea.append("总个数:" + countOfAll + "\n" + "已读个数:" + unReadCount + "\n" + "未读个数:" + newOfCount + "\n");
JOptionPane.showMessageDialog(this, "若想删除某邮件,请 输入你要删除第几份邮件的序号", "消息对话框",
pmm.getSentDate() + "\n"); // 获得邮件内容=============== pmm.getMailContent((Part) msg[i]); showArea.append("Message " + i + "正文: \r\n" + pmm.getBodyText() +"\n"); pmm.saveAttachMent((Part) msg[i]); showArea.append("\n");}
pmm.getSubject() + "\n"+ "Message " + i + " 是否回复: " +
pmm.getReplySign() + "\n"+ "Message " + i + " 是否已读: " +
pmm.isNew() + "\n"+ "Message " + i + " form: " +
内容等的方法,然后在 WindowTriangle 的 java 类中创建模型,最后可以直接用
这样一个对象调用这些方法。
删除功能主要是运用 Flags 的对象,来设置邮件的标志,当为
Flags.Flag.DELETED 时,此时邮件将被删除。
主要代码: WindowTriangle.Java: ...... public void actionPerformed(ActionEvent e) { try { String host = "pop3.163.com"; String userName = "gotogop@163.com"; String passWord = "123ling"; Properties props = new Properties(); Session session = Session.getDefaultInstance(props); session.setDebug(true); Store store = session.getStore("pop3"); store.connect(host, userName, passWord);//验证 Folder folder = store.getFolder("INBOX");//取得收件文件夹 folder.open(Folder.READ_WRITE); if (e.getSource() == controlButton1) {
1
图 1 POP3 的状态转换示意图 POP3 交互模型基本原理为:POP3 接收者对 POP3 发送者进行初始化连接,发 送者对接收者发送询问指令“READY”,接收者则向发送者提交所要接收数据的要 求,发送者做出回应,并发送数据。接收者则开始接收数据。发送者发送完数据 后,提出断开请求,并断开连接。数据接收过程完成。POP3 交互模型如图 2 所 示:
ReciveOneMail pmm;//模型 JTextField textA; //视图 JTextArea showArea;//视图 JButton controlButton1, controlButton2;//控制器
WindowTriangle() { init(); setVisible(true);
3
命令格式:STAT 该命令从服务器中获取邮件总数和总字节数,服务器响应命令返回邮件总数 和总字节数。 (2)LIST 命令 命令格式:LIST 该命令从服务器中获得邮件列表和大小。服务器响应命令返回邮件列表和大 小。 (3)RETR 命令 命令格式:RETR 命令 该命令从服务器中获得一个邮件 (4)DELE 命令 命令格式:DELE<邮件的序号> 该命令告诉服务器将邮件标记为删除 3.更新状态 当客户在操作状态下发送 QUIT 命令后,会话进入更新状态。 QUIT 命令 命令格式:QUIT 该命令关闭与服务器的连接。 3.2 窗体的构建: 使用 MVC 结构的思想构建一个窗体,其中包括两个按钮一个用于控制显示邮 件的各种信息,一个用于控制删除功能,一个文本框用来输入要删除的邮件序号 以及一个文本域来显示各方面的信息。 主要代码: Example.java: public class Example {
5
showArea.append("receive..............................."+"\n"); Message msg[] = folder.getMessages(); showArea.append("邮件个数:" + msg.length+"\n"); ReciveOneMail pmm = null; for (int i = 0; i < msg.length; i++) { Message message = msg[i]; Address address[] = message.getFrom(); showArea.append("======================"); pmm = new ReciveOneMail((MimeMessage) msg[i]); showArea.append("Message " + i + " 主题: " +
2
POP3 发送者
初 始
R
“Hello”
E
“Mail from”
O
接
Q
收
U
断 开
化 连
A D
“Rcpt to” “Data”(reque
K
数 据
I T
连 接
接
Y
st to get)
POP3 接收者
图 2 POP3 交互模型
3. 详细设计及编码
3.1 过程中的三个状态 1.授权状态
客户端首先与 POP3 服务器建立 TCP 连接,服务器接收后发送一个单行的确 认信息。
网络编程技术
课程设计报告
专业
计算机科学与技术
信息工程学院
题 目 : 电子邮件接收程序
1. 概述
随着因特网的普及,电子邮件已经成为人们日常工作、生活中必不可少的通 信工具。客户端接收邮件时,POP3 可以用来读取和保存接收到的邮件,允许客 户端连接到服务器并下载所有的邮件到客户机上的邮箱。
这次课程设计是用 java 语言实现了基于 POP3 的邮件接收程序,要求能通过 POP3 邮件服务器接收邮件并查看邮件的属性及标题和内容等,能删除邮件服务 器中的邮件。
4
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
void init() { textA = new JTextField(5); showArea = new JTextArea(); controlButton1 = new JButton("显示邮件"); controlButton2 = new JButton("确认"); JPanel pNorth = new JPanel(); pNorth.add(controlButton1); pNorth.add(new JLabel("需删除的序号:")); pNorth.add(textA); pNorth.add(controlButton2); controlButton1.addActionListener(this); controlButton2.addActionListener(this); //controlButton.addActionListener(new ActionListener() { 所有
2. 设计原理
POP3 邮件服务器通过侦听 TCP 端口 110 提供 POP3 服务。客户端软件读取邮 件之前,需要先与服务器建立 TCP 连接。连接成功后,POFra Baidu bibliotek3 服务器会向该客户 端发送确认消息。然后客户端根据服务器回送的信息决定下一步的操作。
在 POP3 协议中,规定的命令只有十几条。每条命令均由命令和参数两部分 组成,而且每条命令都以回车换行结束。命令和参数之间空格隔开。POP3 命令 包含一个大小写无关的关键字和一个或多个参量,所有的命令以<CR><LF>( 回 车换行符)作为其结束标志。关键字和参量必须是非控制符的 ASCII 码字符。关 键字和参量之间,参量和参量之间由一个空格字符分隔开。命令部分由 3 至 4 个字母组成,参数部分最多可达 40 个字符长度。
POP3 服务器回送的响应信息由一个状态码和一个可能跟有附加消息的字符 串组成。状态码有两种:“确定”和“失败”。
客户端每次向 POP3 服务器发送命令后,都要等待服务器响应,并处理接受 的信息,然后再接着发送下一个命令,如此反复多次,一直持续到断开连接。这 个过程经历了 3 个状态:授权(AUTHORIZATION)状态、操作(TRANSACTION)状 态和更新(UPDATE)状态。POP3 交互过程中的状态转换如图 1 所示:
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 {
pmm.getFrom() + "\n"+ "Message " + i + " to: " +
pmm.getMailAddress("to") + "\n"); pmm.setDateFormat("yy 年 MM 月 dd 日 HH:mm"); showArea.append("Message " + i + "发送日期: " +
假设用 C 表示客户端(Client),S 表示服务器端(Server),下面是客户端 接收邮件前需要与服务器传输的信息。 (1)发送用户名
命令格式:USER<用户名> 该命令将客户的用户名发送到服务器,服务器返回“OK”表示正确的用户名, “-ERR”表示错误的用户名。 (2)用户名确认成功后,需要输入密码 命令格式:PASS<密码> 该命令将客户的密码发送给服务器。服务器返回“OK”表示正确的密码, “-ERR”表示错误的密码。 2.操作状态 客户端将服务器成功确认了自己的身份后,POP3 会话将进入操作状态,然 后客户端就可以执行 POP3 命令进行相应的操作。 (1)STAT 命令
int countOfAll = folder.getMessageCount();//取得邮件个数 int unReadCount = folder.getUnreadMessageCount();//已读个数 int newOfCount = folder.getNewMessageCount();//未读个数
ActionListener 的函数定义...}) add(pNorth, BorderLayout.NORTH); add(new JScrollPane(showArea), BorderLayout.CENTER);
} ...... 3.3 查看邮件信息方法以及删除功能的实现
创建一个 ReciveOneMail 的 java 类,在其中实现查看邮件的属性、标题和
showArea.append("总个数:" + countOfAll + "\n" + "已读个数:" + unReadCount + "\n" + "未读个数:" + newOfCount + "\n");
JOptionPane.showMessageDialog(this, "若想删除某邮件,请 输入你要删除第几份邮件的序号", "消息对话框",
pmm.getSentDate() + "\n"); // 获得邮件内容=============== pmm.getMailContent((Part) msg[i]); showArea.append("Message " + i + "正文: \r\n" + pmm.getBodyText() +"\n"); pmm.saveAttachMent((Part) msg[i]); showArea.append("\n");}
pmm.getSubject() + "\n"+ "Message " + i + " 是否回复: " +
pmm.getReplySign() + "\n"+ "Message " + i + " 是否已读: " +
pmm.isNew() + "\n"+ "Message " + i + " form: " +
内容等的方法,然后在 WindowTriangle 的 java 类中创建模型,最后可以直接用
这样一个对象调用这些方法。
删除功能主要是运用 Flags 的对象,来设置邮件的标志,当为
Flags.Flag.DELETED 时,此时邮件将被删除。
主要代码: WindowTriangle.Java: ...... public void actionPerformed(ActionEvent e) { try { String host = "pop3.163.com"; String userName = "gotogop@163.com"; String passWord = "123ling"; Properties props = new Properties(); Session session = Session.getDefaultInstance(props); session.setDebug(true); Store store = session.getStore("pop3"); store.connect(host, userName, passWord);//验证 Folder folder = store.getFolder("INBOX");//取得收件文件夹 folder.open(Folder.READ_WRITE); if (e.getSource() == controlButton1) {
1
图 1 POP3 的状态转换示意图 POP3 交互模型基本原理为:POP3 接收者对 POP3 发送者进行初始化连接,发 送者对接收者发送询问指令“READY”,接收者则向发送者提交所要接收数据的要 求,发送者做出回应,并发送数据。接收者则开始接收数据。发送者发送完数据 后,提出断开请求,并断开连接。数据接收过程完成。POP3 交互模型如图 2 所 示:
ReciveOneMail pmm;//模型 JTextField textA; //视图 JTextArea showArea;//视图 JButton controlButton1, controlButton2;//控制器
WindowTriangle() { init(); setVisible(true);
3
命令格式:STAT 该命令从服务器中获取邮件总数和总字节数,服务器响应命令返回邮件总数 和总字节数。 (2)LIST 命令 命令格式:LIST 该命令从服务器中获得邮件列表和大小。服务器响应命令返回邮件列表和大 小。 (3)RETR 命令 命令格式:RETR 命令 该命令从服务器中获得一个邮件 (4)DELE 命令 命令格式:DELE<邮件的序号> 该命令告诉服务器将邮件标记为删除 3.更新状态 当客户在操作状态下发送 QUIT 命令后,会话进入更新状态。 QUIT 命令 命令格式:QUIT 该命令关闭与服务器的连接。 3.2 窗体的构建: 使用 MVC 结构的思想构建一个窗体,其中包括两个按钮一个用于控制显示邮 件的各种信息,一个用于控制删除功能,一个文本框用来输入要删除的邮件序号 以及一个文本域来显示各方面的信息。 主要代码: Example.java: public class Example {
5
showArea.append("receive..............................."+"\n"); Message msg[] = folder.getMessages(); showArea.append("邮件个数:" + msg.length+"\n"); ReciveOneMail pmm = null; for (int i = 0; i < msg.length; i++) { Message message = msg[i]; Address address[] = message.getFrom(); showArea.append("======================"); pmm = new ReciveOneMail((MimeMessage) msg[i]); showArea.append("Message " + i + " 主题: " +
2
POP3 发送者
初 始
R
“Hello”
E
“Mail from”
O
接
Q
收
U
断 开
化 连
A D
“Rcpt to” “Data”(reque
K
数 据
I T
连 接
接
Y
st to get)
POP3 接收者
图 2 POP3 交互模型
3. 详细设计及编码
3.1 过程中的三个状态 1.授权状态
客户端首先与 POP3 服务器建立 TCP 连接,服务器接收后发送一个单行的确 认信息。
网络编程技术
课程设计报告
专业
计算机科学与技术
信息工程学院
题 目 : 电子邮件接收程序
1. 概述
随着因特网的普及,电子邮件已经成为人们日常工作、生活中必不可少的通 信工具。客户端接收邮件时,POP3 可以用来读取和保存接收到的邮件,允许客 户端连接到服务器并下载所有的邮件到客户机上的邮箱。
这次课程设计是用 java 语言实现了基于 POP3 的邮件接收程序,要求能通过 POP3 邮件服务器接收邮件并查看邮件的属性及标题和内容等,能删除邮件服务 器中的邮件。