您好,欢迎访问三七文档
综合实验报告(2015--2016年度第一学期)名称:网络软件设计题目:邮件接收器程序院系:计算机系班级:网络1202学号:201209030220学生姓名:韦笑指导教师:鲁斌朵春红设计周数:1周成绩:日期:2016年1月15日《网络软件程序设计》课程设计任务书一、目的与要求1.任务:设计一个邮件接收程序,可以按照要求实现邮件接收器的功能。2.目的:使学生加深对网络通信协议、网络编程接口等基本概念、基本原理的理解,熟悉各种应用各种网络通信协议和网络编程接口编写网络应用程序的方法,拓宽学生的知识领域,锻炼学生的实践技能,培养学生科学的工作作风。3.要求:基本功能完善,界面美观,方便易用,操作无误;通过课程设计学生应该学会使用各种网络通信协议和网络编程接口编写不同类型的网络应用程序,具备初步分析、设计和开发网络应用软件的能力,具备分析与检查软件错误、解决和处理实验结果的能力。4.学生要求人数:1人。二、主要内容POP3协议是一个从邮件服务器的邮箱中取邮件到本地主机的协议。邮件接收器是利用POP3原理实现接收邮件服务器上的邮件,并把邮件下载保存到本地计算机上。三、进度计划序号设计内容完成时间备注1任务布置,资料查询,方案制定周一2算法设计,程序实现周二至周四3撰写报告,软件验收周五4四、设计成果要求1.完成规定的课程设计任务,所设计软件功能符合要求;2.完成课程设计报告,要求格式规范,内容具体而翔实,应体现自身所做的工作,注重对设计思路的归纳和对问题解决过程的总结。五、考核方式1.平时成绩+验收答辩+实验报告;2.五级分制。学生姓名:指导教师:鲁斌朵春红2016年1月11日一、目的与要求1.任务:设计一个邮件接收程序,可以按照要求实现邮件接收器的功能。2.目的:使学生加深对网络通信协议、网络编程接口等基本概念、基本原理的理解,熟悉各种应用各种网络通信协议和网络编程接口编写网络应用程序的方法,拓宽学生的知识领域,锻炼学生的实践技能,培养学生科学的工作作风。3.要求:基本功能完善,界面美观,方便易用,操作无误;通过课程设计学生应该学会使用各种网络通信协议和网络编程接口编写不同类型的网络应用程序,具备初步分析、设计和开发网络应用软件的能力,具备分析与检查软件错误、解决和处理实验结果的能力。二、实验原理JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。本实验程序基于javamail实现邮件的接收和下载功能。三、部分代码/***收邮件*/publicvoidreceiveAllMail()throwsException{if(this.receiverInfo==null){thrownewException(必须提供接收邮件的参数!);}//连接到服务器if(this.connectToServer()){//打开收件箱if(this.openInBoxFolder()){//获取所有邮件System.out.println(@@@@@@@@@@@@@);this.getAllMail();this.closeConnection();}else{thrownewException(打开收件箱失败!);}}else{thrownewException(连接邮件服务器失败!);}}/***登陆邮件服务器*/privatebooleanconnectToServer(){//判断是否需要身份认证MyAuthenticatorauthenticator=null;if(this.receiverInfo.isValidate()){//如果需要身份认证,则创建一个密码验证器authenticator=newMyAuthenticator(this.receiverInfo.getUserName(),this.receiverInfo.getPassword());}//创建sessionSessionsession=Session.getInstance(this.receiverInfo.getProperties(),authenticator);//创建store,建立连接try{this.store=session.getStore(this.receiverInfo.getProtocal());}catch(NoSuchProviderExceptione){System.out.println(连接服务器失败!);returnfalse;}System.out.println(connecting);try{this.store.connect();}catch(MessagingExceptione){System.out.println(连接服务器失败!);returnfalse;}System.out.println(连接服务器成功);returntrue;}/***打开收件箱*/privatebooleanopenInBoxFolder(){try{this.folder=store.getFolder(INBOX);//只读folder.open(Folder.READ_ONLY);returntrue;}catch(MessagingExceptione){System.err.println(打开收件箱失败!);}returnfalse;}/***断开与邮件服务器的连接*/privatebooleancloseConnection(){try{if(this.folder.isOpen()){this.folder.close(true);}this.store.close();System.out.println(成功关闭与邮件服务器的连接!);returntrue;}catch(Exceptione){System.out.println(关闭和邮件服务器之间连接时出错!);}returnfalse;}/***显示邮件的基本信息*/privatevoidshowMailBasicInfo()throwsException{showMailBasicInfo(this.currentMessage);}privatevoidshowMailBasicInfo(Messagemessage)throwsException{System.out.println(--------邮件ID:+this.getMessageId()+---------);System.out.println(From:+this.getFrom());System.out.println(To:+this.getTOAddress());System.out.println(CC:+this.getCCAddress());System.out.println(BCC:+this.getBCCAddress());System.out.println(Subject:+this.getSubject());System.out.println(发送时间::+this.getSentDate());System.out.println(是新邮件?+this.isNew());System.out.println(要求回执?+this.getReplySign());System.out.println(包含附件?+this.isContainAttach());System.out.println(------------------------------);}/***获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同*to----收件人cc---抄送人地址bcc---密送人地址*/privateStringgetTOAddress()throwsException{returngetMailAddress(TO,this.currentMessage);}privateStringgetCCAddress()throwsException{returngetMailAddress(CC,this.currentMessage);}privateStringgetBCCAddress()throwsException{returngetMailAddress(BCC,this.currentMessage);}/***获得邮件地址*@paramtype类型,如收件人、抄送人、密送人*@parammimeMessage邮件消息*@return*@throwsException*/privateStringgetMailAddress(Stringtype,MessagemimeMessage)throwsException{Stringmailaddr=;Stringaddtype=type.toUpperCase();InternetAddress[]address=null;if(addtype.equals(TO)||addtype.equals(CC)||addtype.equals(BCC)){if(addtype.equals(TO)){address=(InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.TO);}elseif(addtype.equals(CC)){address=(InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.CC);}else{address=(InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.BCC);}if(address!=null){for(inti=0;iaddress.length;i++){//先获取邮件地址Stringemail=address[i].getAddress();if(email==null){email=;}else{email=MimeUtility.decodeText(email);}//再取得个人描述信息Stringpersonal=address[i].getPersonal();if(personal==null){personal=;}else{personal=MimeUtility.decodeText(personal);}//将个人描述信息与邮件地址连起来Stringcompositeto=personal++email+;//多个地址时,用逗号分开mailaddr+=,+compositeto;}mailaddr=mailaddr.substring(1);}}else{thrownewException(错误的地址类型!!);}returnmailaddr;}/***获得发件人的地址和姓名*@throwsException*/privateStringgetFrom()throwsException{returngetFrom(this.currentMessage);}privateStringgetFrom(MessagemimeMessage)throwsException{InternetAddress[]address=(InternetAddress[])mimeMessage.getFrom();//获得发件人的邮箱Stringfrom=address[0].getAddress();if(from==null){from=;}//获得发件人的描述信息Stringpersonal=address[0].getPersonal();if(personal==null){personal=;}//拼成发件人完整信息Stringfromaddr=personal+
本文标题:网络程序设计
链接地址:https://www.777doc.com/doc-2072217 .html