




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、蘆燼工粤院网络编程技术<!课程设计报告计算机科学与技术学生姓名朱虹b计算机111胡波2014年7月4日学 号指导教师完成日期1110704129信息工程学院题目:电子邮件接收程序pop3 (post office protocol version 3),即邮局办公协议,该协议用于 接收邮件的双方(客户机、pop3服务器)进行通信。使用该协议,用户可以脱 机阅读信件,而不必把客户机长期连接到网络上,以减少网络费用。pop3协议 允许用户以一定的方式从保存邮件的服务器(即pop3服务器)上取走自己的邮 件。2.设计原理pop允许客户端连接到服务器并下载所有的邮件到客户机上的邮箱。pop3 邮
2、件服务器通过侦听tcp端口 110提供pop3服务。客户端软件读取邮件之前, 需要先与服务器建立tcp连接。连接成功后,pop3服务器会向该客户端发送确 认消息。然后客户端根据服务器回送的信息决定下一步的操作。客户端每次向pop3服务器发送命令后,都耍等待服务器响应,并处理接受 的信息,然后再接着发送下一个命令,如此反复多次,一直持续到断开连接。这 个过程经历了 3个状态:授权(authorization)状态、操作(transaction)状 态和更新(update)状态。在pop3协议屮,规定的命令只有十几条。每条命令均由命令和参数两部分 组成,而且每条命令都以回车换行结束。命令和参数之间
3、空格隔开。命令部分由 3至4个字母组成,参数部分最多可达40个字符长度。pop3服务器回送的响应信息由一个状态码和一个可能跟有附加消息的字符 串组成。状态码有两种:“确定”和“失败”。pop3发送者初始化连接<6mail from" rcpt to" datxreque st to get)接收数据q u it断开连接pop3接收者该模型基本原理为:pop3接收者对pop3发送者进行初始化连接,发送者对 接收者发送询问指令“ready”,接收者则向发送者提交所要接收数据的要求,发送者做出回应,并发送数据。接收者则开始接收数据。发送者发送完数据后,提 出断开请求,并断开
4、连接。数据接收过程完成。pop3的状态转换示意图3 详细设计及编码1 授权状态客户端首先与pop3服务器建立tcp连接,服务器接收后发送一个单行的确 认信息。假设用c表示客户端(client), s表示服务器端(server),下面是客户 端接收邮件前需要与服务器传输的信息。(1) 发送用户名命令格式:user用户名,该命令将客户的用户名发送到服务器,服务 器返冋“ok”表示正确的用户名,“err”表示错误的用户名。(2) 用户名确认成功后,需要输入密码命令格式:passv密码,该命令将客户的密码发送给服务器。服务器返 冋“ok”表示正确的密码,“err”表示错误的密码。2 操作状态客户端将服
5、务器成功确认了自己的身份后,pop3会话将进入操作状态,然后 客户端就可以执行pop3命令进行相应的操作。(1) stat 命令命令格式:stat,该命令从服务器中获取邮件总数和总字节数,服务器响 应命令返冋邮件总数和总字节数。(2) list 命令命令格式:list,该命令从服务器中获得邮件列表和人小。服务器响应命 令返冋邮件列表和大小。(3) retr 命令命令格式:retr命令,该命令从服务器中获得一个邮件(4) dele 命令命令格式:dele邮件的序号,该命令告诉服务器将邮件标记为删除3 更新状态当客户在操作状态下发送quit命令后,会话进入更新状态。3.1、与邮件服务器的连接:ja
6、vamailapi中定义了一个javax.mail.store类,它用于执行邮件接收任务,这 个类的实例对象封装了某种邮件接收协议的底层实施细节,应用程序调用这个类 中的方法就可以获得用户邮箱中的各个邮件夹的信息。javamail使用folder对象 表示邮件夹,通过folderm象的方法应用程序进而又可以获得该邮件夹中的所有 邮件信息,而每封邮件信息,血vamail又分别使用了一个message对象进行封装。 主要代码:properties props = new properties();存储接收邮件服务器使用的协议props.setpropertyc'
7、tocol", "pop3'');设置接收邮件服务器的地址props.setproperty(nmail.pop3.hosth5 "");根据属性新建一个邮件会话session session=session.getinstance(props);从会话对象中获得pop3协议的store对象store store = session.getstore(hpop3h);如果需要查看接收邮件的详细信息,需要设置debug标志session.setdebug(false);3.2、窗体的构建:使用mvc结构的思想构建一个窗体,其中包括两个按钮一
8、个用于控制显示邮 件的各种信息,一个用于控制删除功能,一个文本框用来输入要删除的邮件序号 以及一个文本域来显示各方面的信息。主要代码:example.java:public class example public static void main(string args)windowtriangle win=new windowtriangle();win.settitle(”邮件接收和删除程序j; win.setbounds( 100,100,420,260);windowtriangle.java:public class windowtriangle extends j frame i
9、mplements actionlistener reciveonemail pmm; 模型jtextfield text a; 视图jtextarea showarea;视图jbutton controlbuttonl, controlbutton2;/控制器windowtriangle() init();setvisible(true); setdefaultcloseoperation(jframe.exit_on_close);void init() texta = new jtextfield(5);showarea = new jtextarea();controlbuttonl
10、= new jbutton("显示邮件”);controlbutton2 = new jbutton("确认”);j panel pnorth = new jpanel();pn orth. add(control b utton 1); pnorth.add(new jlabel("需删除的序号:"); pn orth. add(texta);pnorth.add(controlbutton2);controlbuttonl.addactionlistener(this); controlbutton2.addactionlistener(this);
11、 /controlbutton.addactionlistener(new actionlistener() 所有actionlistener的函数定义.)add(pnorth, borderlayout.north); add(new jscrollpane(showarea), borderlayout.center);3.3、查看邮件信息方法以及删除功能的实现:创建一个reciveonemailfljava类,在其中实现查看邮件的属性、标题和内容 等的方法,然后在windowtriangle的java类中创建模型,最后可以直接用这样一 个对象调用这些方法。删除功能主要是运用flags的对
12、象,来设置邮件的标志,当为 flags.flag.deleted时,此时邮件将被删除。主要代码:windowtriangle.java:public void actionperformed(actionevent e) try string host = "”;string username 二"zhuhongl9930722"string password = nzhuhongl993n;properties props = new properties();session session = session.getdefaultlnstance(props)
13、; session.setdebug(true);store store = session.getstore(hpop3h); storexonnect(host, username, password);/验证folder folder = store.getfolder("inboxm);/取得收件文件夹 folder.open(folder.read_write);if (e.getsource() = controlbuttonl) showarea.append(hreceiven+nnn);message msg = folde匚getmessages(); showa
14、rea.append(h 邮件个数:"+ msg.length+nn"); reciveonemail pmm = null;for (int i = 0; i < msg.length; i+) message message = msgi;address address = message.getfrom(); showarea.append(h="); pmm = new reciveonemail(mimemessage) msgi); showarea.append("message ” + i + ” 主题:” + pmm.getsub
15、jecto + "nu+message ” + i + ” 是否冋复:” + pnun.getreplysigno + ”n"+"message ” + i + ” 是否已读:"+ pmm.isnewo + ”n”+"message ” + i + " form: " + pmm.getfromo + "nu+message ” + i + ” to: ” + pmm.getmailaddress(nton) +pmm.setdateformat("yy年mm月 dd 日 showarea.append(
16、umessage ” + i + ”发送日期:” + pnun.getsentdateo + nnn);/获得邮件内容= pmm.getmailcontent(part) msgi); showarea.append("message ” + i + "正文:rnn4- pmm.getbodytext() +"nn);pmm.saveattachment(part) msgi); showarea.append("n");int countofall = folder.getmessagecount();/ 取得邮件个数int unreadco
17、unt = folder.getunreadmessagecount();/已读个数 int newofcount = folder.getnewmessagecount();/未读个数showarea.appendc'总个数:” + countofall + "nh +”已读个数:” + unreadcount + ”n” +”未读个数:"+ newofcount + mnh);joptionpane.showmessagedialog(this,"若想删除某邮件,请输 入你要删除第几份邮件的序号”,”消息对话框蔦joptionpane.warning_
18、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,"你输入有误!","消息对话框”, jo
19、ptionpane.warning_message); else message message = foldeigetmessage(i);message.setflag(flags.flag.deleted, true);/设置已删除状态为trueif (message.isset(flags.flag.deleted) showarea.append(h已经删除第” + i + ”邮件。”); joptionpane.showmessagedialog(this,"删除成功”,"消息对话框", joptionpane.warning_message);fol
20、de r.close(true);store.close(); catch (exception ex) showarea.append(un" + ex + "n");4. 结果及分析(1)运行程序,会显示整个窗体,如图:(2)点击显示邮件,与服务器连接,如图:ffi邮件接收和删険程序1 o回i耳|zr-显示邮件霊删降的序号=mumessage 4 是否已falsemessage 4form:微微爱<715251673>message 4 to; zhuhong19930722<zhuhong19930722>message 4 发送曰期
21、:1407 月 02 曰 17:03message 41e>fzzmessage、乂白卄千运邮件接收程序由消息对话枉总个数;5 已读个数:5耒读个数:0/i若翹刪降某郦件,谙输入你要删降第几份哪件白iii(3)显示所有文件:m3 sukm4tu 护* 伽w *>»t migbit mt 4砂7»ax 二 jx” 厶 理界昭21(m«)i>2anur mwf*tl25m739aar*mm0|i jd.8un»m.am-rmm. -ik.t«dr>amwl.ltlr*m<mi>er卜丄."mt.mntwtl wmmuqtj
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025内蒙古应急管理厅选聘应急管理综合行政执法社会监督员的考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025甘肃陇南市成县消防救援大队招聘政府专职消防员12人考前自测高频考点模拟试题及参考答案详解一套
- 2025甘肃酒泉市公安局招聘留置看护岗位警务辅助人员(第二批)30人考前自测高频考点模拟试题及答案详解(必刷)
- 2025黑龙江齐齐哈尔市尚志市招聘警务辅助人员60人模拟试卷及参考答案详解
- 2025辽宁盘锦市卫生健康委所属部分公立医院校园招聘94人考前自测高频考点模拟试题附答案详解
- 2025甘肃甘南州临潭县人民法院招聘司法辅助警察4人考前自测高频考点模拟试题附答案详解(完整版)
- 洗选煤原理课件
- 2025福建漳州市公安局招聘警务辅助人员76人模拟试卷及参考答案详解
- 2025年龙岩市供电服务有限公司招聘59人考前自测高频考点模拟试题及答案详解(名校卷)
- 2025贵州铜仁职业技术学院引进博士研究生15人模拟试卷及参考答案详解1套
- 抖音汽车直播培训方案
- 生物技术与医药研发的前沿与应用
- 清洁生产与清洁生产审核培训PPT
- 硝酸银泄漏处置方案
- 高新技术企业、研发费用加计扣除
- 《中国政治思想史》课程教学大纲
- 许继保护装置说明书
- GB/T 2934-2007联运通用平托盘主要尺寸及公差
- 《矩阵论》研究生教学课件
- 操作系统第一章答案
- 民用爆炸物品报废及销毁制度(附表单)
评论
0/150
提交评论