基于POP3与SMTP协议的邮件收发程序的开发毕业论文.doc
《基于POP3与SMTP协议的邮件收发程序的开发毕业论文.doc》由会员分享,可在线阅读,更多相关《基于POP3与SMTP协议的邮件收发程序的开发毕业论文.doc(26页珍藏版)》请在三一文库上搜索。
1、基于POP3与SMTP协议的邮件收发程序的开发一、 设计思想POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,,由RFC 1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。POP3是TCP/IP协议
2、族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或 MAC。一旦邮件发送到 PC 机或MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。脱机模型即不能在线操作,POP不支持对服务器邮件进行扩展
3、操作,此过程需要更高级的IMAP4协议来完成。支持POP协议使用ASCII码来传输数据消息,这些数据消息可以是指令,也可以是应答。SMTP目前已是事实上的在Internet传输E-Mail的标准,是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确定是存在的),然后消息文本就传输了。可以很简单地通过Telnet程序来测试一个SMTP服务器,SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX(Mail eXchange)DNS。在20世纪80年代早期SMTP开始被广泛地使用。当时它只是作为UUCP的补充,UUCP更适合于处理
4、在间歇连接的机器间传送邮件。相反SMTP在发送和接收的机器始终都联网的情况下工作得最好。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持。SMTP重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。通常,一个网络可以由公用因特网上TCP可相互间访问的主机、防火墙分隔的TCP/IP网络上TCP可相互访问的主机,以及其他LAN/WAN中的主机利用非TCP传输层协议组成。使用SMTP,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关是实现某处理机与其他网络之间的邮件传输。在smtp这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服
5、务系统(DNS)的邮件交换服务器可以用来识别出传输邮件的下一跳IP地址。Sendmail是最早实现SMTP的邮件传输代理之一。到2001年至少有50个程序将SMTP 实现为一个客户端(消息的发送者)或一个服务器(消息的接受者)。一些其他的流行的SMTP服务器包括Philip Hazel 的exim,IBM的Postfix,D.J.Bernstein的Qmail,以及Microsoft Exchange Server.由于这个协议开始是基于纯ASC文本的,在二进制文件上处理得并不好。后来开发了用来编码二进制文件的标准,如MIME,以使其通过SMTP来传输。今天,大多数SMTP服务器都支持8位MI
6、ME扩展,它使二进制文件的传输变得几乎和纯文本一样简单。二、算法流程图本程序的核心算法流程图如下图所示:图1 程序算法流程图三、源代码 package frame;import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import javax.swing.JButton;imp
7、ort javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPasswordField;import javax.swing.JTextField;import utils.CheckNewMail;import utils.EditorUtils;import action.LoginAction;/* * 登录页面 */public class LoginFrame extends JFrame
8、 implements ActionListener, ItemListener private static final long serialVersionUID = 1L;private JComboBox pop3CB;/ 收邮件服务器下拉列表private JComboBox smtpCB;/ 发邮件服务器下拉列表private JTextField nameTF;private JPasswordField passwordTF;private JButton loginButton = null, resetButton = null;private String usernam
9、e = null, password = null, popHost = null,smtpHost = null;/ SMTP服务器private JProgressBarFrame progressBar = null;/ 进度条实例public LoginFrame() super();this.setIconImage(EditorUtils.createIcon(email.png).getImage();getContentPane().setLayout(null);jFrameValidate();setTitle(登录邮箱);JLabel backgroundLabel =
10、new JLabel();backgroundLabel.setBounds(0, 0, 768, 540);backgroundLabel.setText();backgroundLabel.setLayout(null);final JLabel smtpLable = new JLabel();smtpLable.setText(SMTP 服务器:);smtpLable.setBounds(230, 203, 100, 18);backgroundLabel.add(smtpLable);final JLabel pop3Label = new JLabel();pop3Label.se
11、tText(POP3 服务器:);pop3Label.setBounds(230, 243, 100, 18);backgroundLabel.add(pop3Label);final JLabel nameLabel = new JLabel();nameLabel.setText(邮箱名称:);nameLabel.setBounds(230, 283, 100, 18);backgroundLabel.add(nameLabel);final JLabel passwordLable = new JLabel();passwordLable.setText(密码:);passwordLab
12、le.setBounds(230, 323, 100, 18);backgroundLabel.add(passwordLable);/ 发件箱服务器地址列表String smtpAdd = , , , , , , , , , , ;smtpCB = new JComboBox(smtpAdd);smtpCB.setSelectedIndex(0);smtpCB.setEditable(true);smtpCB.addItemListener(this);smtpCB.setBounds(370, 203, 150, 22);backgroundLabel.add(smtpCB);/ 收件箱服
13、务器地址列表String pop3Add = , , , , , , , , , , , ;pop3CB = new JComboBox(pop3Add);pop3CB.setSelectedIndex(0);pop3CB.addItemListener(this);pop3CB.setEditable(true);pop3CB.setBounds(370, 243, 150, 22);backgroundLabel.add(pop3CB);nameTF = new JTextField();nameTF.setBounds(370, 283, 150, 22);backgroundLabel
14、add(nameTF);passwordTF = new JPasswordField();passwordTF.setBounds(370, 323, 150, 22);backgroundLabel.add(passwordTF);loginButton = new JButton(登录);resetButton = new JButton(重置);backgroundLabel.add(loginButton);backgroundLabel.add(resetButton);loginButton.setBounds(280, 360, 80, 30);resetButton.set
15、Bounds(400, 360, 80, 30);loginButton.addActionListener(this);resetButton.addActionListener(this);getContentPane().add(backgroundLabel);progressBar = new JProgressBarFrame(this, 登录, 登录中,请稍后.);reset();/ 默认初始值public void jFrameValidate() Toolkit tk = getToolkit();/ 获得屏幕的宽和高Dimension dim = tk.getScreenS
16、ize();this.setResizable(false);this.setBounds(dim.width / 2 - 380, dim.height / 2 - 270, 776, 574);validate();this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/ 登录 和重置事件的处理Overridepublic void actionPerformed(ActionEvent e) if (e.getSource() = loginButton) / 登录progressBar.setVisible(true);/ 设置进度条可
17、见new Thread() public void run() getValues();/ 得到界面中的所有项的值checkUser();/ 登录验证.start(); else if (e.getSource() = resetButton) / 重置reset();/ 重新设置各项的值/ 得到界面中的所有项的值private void getValues() smtpHost = (String) smtpCB.getSelectedItem();popHost = (String) pop3CB.getSelectedItem();username = nameTF.getText().
18、trim();password = passwordTF.getText().trim();/ 重新设置各项的值private void reset() smtpCB.setSelectedIndex(0);pop3CB.setSelectedIndex(0);nameTF.setText(55531990);passwordTF.setText(QQmima);/ 登录验证private void checkUser() LoginAction login = new LoginAction(smtpHost, popHost, username,password);if (login.is
19、Login() / 登录成功progressBar.dispose();new CheckNewMail().start();/ 开始检测新邮件this.dispose();/ 释放本窗口资源new MainFrame().setVisible(true); else / 登录失败progressBar.setVisible(false);JOptionPane.showMessageDialog(this, + 登录失败,请检查主机、用户名、密码是否正确! + , 警告,JOptionPane.WARNING_MESSAGE);/ 下拉列表改变时的事件处理public void itemSt
20、ateChanged(ItemEvent e) if (e.getSource() = smtpCB) if (e.getStateChange() = ItemEvent.SELECTED& smtpCB.getSelectedIndex() != -1)pop3CB.setSelectedIndex(smtpCB.getSelectedIndex(); else if (e.getSource() = pop3CB) if (e.getStateChange() = ItemEvent.SELECTED& pop3CB.getSelectedIndex() != -1)smtpCB.set
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 POP3 SMTP 协议 邮件 收发 程序 开发 毕业论文
