您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 多媒体网络通信技术实验报告
XX大学计算机与电子信息学院多媒体网络通信邮件接收与发送实验1多媒体网络通信邮件接收与发送实验报告学院:计算机与电子信息学院班级名称:学生姓名:空白小龙学号:指导教师:时间:2011年1月XX大学计算机与电子信息学院多媒体网络通信邮件接收与发送实验2一、实验题目:编写一个邮件客户端和邮件接收端,能够接收和发送邮件。二、实验过程:本次实验通过使用JavaMail以及Java的图形化界面来完成邮件接收与发送的功能。JavaMail是提供给开发者处理电子邮件相关的编程接口,它是Sun发布的用来处理Email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于MicrosoftOutlook或者Foxmail的应用程序。虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(JavaDevelopmentKit),这就意味着你在使用前必须另外下载JavaMail文件。所以在此次实验中,我在项目中添加了activation.jar和mail.jar这两个jar包。JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。下面简要介绍下我的设计思路与实现过程并简单地注释下代码。我的项目构造如下图:XX大学计算机与电子信息学院多媒体网络通信邮件接收与发送实验3主要设计思想是登录验证发送邮件或者接收邮件,通过校验用户输入的邮箱账号和密码来进行验证,输入不正确的话就弹出提示框给出错误提示并可继续重新输入,如果正确的话就进入发送邮件的界面,此时默认的发件人就是用户输入的账号,与此同时把用户在登录模块输入的密码也存起来,作为以后发送邮件和接收邮件的密码。成功登录之后,即进入了发送邮件的界面中,发件人已经默认设置为用户登录时输入的账号了,其他的比如说:收件人、邮件主题、内容、附件均可由用户输入与选择,可支持多附件传输。发送邮件成功后会弹出对话框提示邮件已经成功发送。在发送邮件的界面上还有一个按钮是“收信”按钮,可切换到接收邮件界面。进入接收邮件界面后,就默认接收第一封邮件了,在界面上分别显示了邮箱中一共有几封邮件;邮件的主题、发件人、发送邮件的时间、邮件内容、邮件附件(默认保存在C盘根目录中);并可通过“上XX大学计算机与电子信息学院多媒体网络通信邮件接收与发送实验4一封”和“下一封”来查看其他邮件;在界面上还有一个“写信”按钮,用于切换到发送邮件界面。大概的功能设计就是这样了。为了更好的体现面向对象的设计思想,我把邮件抽象成了一个Mail类(mail包),在接收和发送邮件的工程中很好的使用到了这个类,Mail类(自定义的邮件类)主要包含了发送者邮箱用户名userName、发送者邮箱密码password、发送邮件服务器hostName、发送邮件服务器端口port、邮件接收者toAddress、邮件主题subject、邮件内容content、邮件发送者fromAddress、附件路径列表fileList、附件保存路径attachPath、邮件发送时间time、邮件数量number这些成员变量,并添加了相应的set和get方法。另外Check类(check包)用于检测用户输入的邮箱账号和密码是否正确,正确则返回true,否则返回false。recive包中的ReciveMyMail类为接收邮件类;send包中的SendMyMail类为发送邮件类,而MyAuthenticator类继承了Authenticator类用于记录用户名和密码。gui包中包含三个图形化界面的类,分别为:Login类(邮件登录界面)、SeadMail类(邮件发送界面)、ReciveMail类(邮件接收界面)。三、实验代码:mail包中的Mail.javapackagemail;(import略)/**XX大学计算机与电子信息学院多媒体网络通信邮件接收与发送实验5*自定义的邮件类**@author空白小龙*@version1.0.0,2010-10-28*/publicclassMail{//发送者邮箱用户名publicstaticStringuserName;//发送者邮箱密码publicstaticStringpassword;//发送邮件服务器privateStringhostName;//发送邮件服务器端口privateintport;//邮件接收者privateStringtoAddress;//邮件主题privateStringsubject;//邮件内容privateStringcontent;//邮件发送者privateStringfromAddress;//附件路径列表privateListStringfileList=newArrayListString();//附件保存路径privateStringattachPath;//邮件发送时间privateStringtime;//邮件数量privateintnumber;//get方法和set方法略check包中的Check.javapackagecheck;(import略)/***检测邮箱账号和密码是否正确**@author空白小龙*@version1.0.0,2010-10-28*/XX大学计算机与电子信息学院多媒体网络通信邮件接收与发送实验6publicclassCheck{/***验证登录是否成功,成功返回true,否则返回false**@parammail*@returntrueorfalse*/publicbooleanMyCheck(Mailmail){try{//设置JavaMail属性Propertiesprops=newProperties();//设置邮件服务器端口props.put(mail.smtp.port,mail.getPort());//SMTP邮件服务器IP地址或主机名props.put(mail.smtp.host,mail.getHostName());props.put(mail.smtp.auth,true);//需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)MyAuthenticatorauth=newMyAuthenticator(mail.getUserName(),mail.getPassword());//根据已配置的JavaMail属性创建Session实例SessionmailSession=Session.getInstance(props,(Authenticator)auth);//创建Transport对象Transporttran=mailSession.getTransport(smtp);//连接邮件服务器try{tran.connect(mail.getHostName(),mail.getUserName(),mail.getPassword());}catch(javax.mail.AuthenticationFailedExceptione){returnfalse;}tran.close();}catch(AddressExceptione){}catch(MessagingExceptione){}returntrue;}}recive包中的ReciveMyMail.javapackagerecive;XX大学计算机与电子信息学院多媒体网络通信邮件接收与发送实验7(import略)/***接收邮件类**@author空白小龙*@version1.0.0,2010-10-28*/publicclassReciveMyMail{//Mail实例化对象staticMailmail;//附件路径列表staticListStringfileList=newArrayListString();//构造方法publicReciveMyMail(){}//重写构造方法@SuppressWarnings(static-access)publicReciveMyMail(Mailmail){this.mail=mail;}//接收邮件的方法publicMailreveiveMail(intnum){try{Propertiesprops=newProperties();Sessionsession=Session.getDefaultInstance(props,null);Storestore=session.getStore(pop3);store.connect(mail.getHostName(),mail.getUserName(),mail.getPassword());Folderfolder=store.getFolder(INBOX);folder.open(Folder.READ_ONLY);Messagemessage[]=folder.getMessages();mail.setNumber(message.length);if(message.length0){fileList.clear();handleMultipart(message[num]);}else{returnnull;}if(folder!=null){folder.close(true);}XX大学计算机与电子信息学院多媒体网络通信邮件接收与发送实验8if(store!=null){store.close();}}catch(NoSuchProviderExceptione){e.printStackTrace();}catch(MessagingExceptione){e.printStackTrace();}catch(Exceptione){e.printStackTrace();}returnmail;}privatevoidhandleMultipart(Messagemsg)throwsException{handle(msg);Stringdisposition;Multipartmp=(Multipart)msg.getContent();intmpCount=mp.getCount();for(intm=0;mmpCount;m++){BodyPartpart=mp.getBodyPart(m);disposition=part.getDisposition();if(disposition!=null&&disposition.equals(Part.ATTACHMENT)){saveAttach(part,mail.getAttachPath());}}//邮件附件mail.setFileList(fileList);}//填充邮件@SuppressWarnings(deprecation)privatestaticvoidhandle(Messagemsg)throwsException{//邮件主题mail.setSubject(msg.getSubject());//邮件发件人mail.setToAddress(msg.getFrom()[0].toString());//邮件发送时间mail.setTime(msg.getSentDate().toLocaleString());StringcontentStr=;//获取信息对象PartmessagePart=msg;Objectcontent=messagePart.getContent();//附件XX大学计算机与电子信息学院多媒体网络通信邮件接收与发送实验9if(contentinstanceofMultipart){messagePart=((Multipart)content).getBodyPart(0);}/
本文标题:多媒体网络通信技术实验报告
链接地址:https://www.777doc.com/doc-3397274 .html