基于JAVA GUI的电子邮件客户端软件的设计与实现

上传人:仙*** 文档编号:28631373 上传时间:2021-09-04 格式:DOC 页数:42 大小:1.05MB
返回 下载 相关 举报
基于JAVA GUI的电子邮件客户端软件的设计与实现_第1页
第1页 / 共42页
基于JAVA GUI的电子邮件客户端软件的设计与实现_第2页
第2页 / 共42页
基于JAVA GUI的电子邮件客户端软件的设计与实现_第3页
第3页 / 共42页
点击查看更多>>
资源描述
利用Java GUI和java mail实现的email客户端2008届 分类号:TP311 单位代码:10452 学士学位毕业设计(论文)E M A I L客 户 端 ( Java GUI )姓 名 于 立 兴 学 号 200412130206 年 级 2004级 专 业 计算机科学与技术系(院) 信 息 学 院 指导教师 张 雪 飞 THE MANAGEMENT SYSTEM OF VEHICLES BASED ON VISUALFOXPRObyY u L i x i n gSupervisor: Zhang XuefeiApril 2008诚 信 声 明本人呈交给临沂师范学院的这篇毕业论文,除了所注参考文献和世所公认的文献外,全部是本人在指导老师指导下的设计成果。 学生签名:于立兴日 期:20080426经检查该毕业设计(论文)为独立完成,不存在抄袭现象。 指导老师签名:日 期:摘 要本系统是用 java 语言实现的一个 Email客户端,主要用到 java GUI 图形界面设计和 java mail 工具包, 它适用于所有用户,无管理员设置,可以实现网络邮箱的邮件发送和邮件收取的基本功能,还具有通讯录的存储功能,针对用户的需求,本Email客户端具有以下两大模块:1基本设置模块;此模块主要包括用户设置和邮箱设置两大内容:1.1 用户设置:主要设置用户的一些基本信息,如用户名,用户密码等设置1.2 邮箱设置:主要设置邮箱服务器,SMTP,POP3等2.Email功能模块;此模块根据大众用户的需求划分了以下三个部分:2.1收取邮件功能;2.2发送邮件功能;2.3通讯录功能;该系统的开发过程为:1.Email客户端的需求分析;2.Email客户端的系统分析;3.Email客户端的功能模块划分划分;4.Email客户端的数据库设计;5.Email客户端的界面设计;6.Email客户端的功能模块设计及代码实现关键字:java,java GUI,java mailAbstractThis email client system is developed in java language using java GUI and java mail tools .It can be used by any users who want to use it . The system is not including manager settings and it can finish the function of sending and accepting mails in web mail system, it can store user information a function like a address book in the web. The systems need to achieve the overall function to run two parts, as follows1. The basic settingsTwo parts are followed:1.1 Maintenance System Administrators basic information; 1.2 Student response functions; 2. Email functionsThree function will be available2.1 Sending mails2.2 Receiving mails2.3 Address bookThe system development process : 1. Email client needs analysis; 2. Email client system analysis; 3. Email client function modules partition; 4. Email client design; 5. Email client interface design; 6. Email client functional design and code modules to achieve Key word:java , java GUI ,java mail目 录42前 言7第1章 系统概述及系统分析81.1系统概述81.1.1基本设置模块81.1.2 Email功能模块81.2 需求分析91.3 可行性分析91.3.1技术可行性分析91.3.2环境可行性分析91.3.3经济可行性分析9第2章 系统开发基本介绍102.1 选题背景与目的102 .2 系统开发工具102 .3 系统开发环境102 .4开发技术概述112 .4.1 J2EE概述112 .4.2 Java GUI112 .4.3 Java mail12第3章 系统总体设计133 .1 系统功能模块划分133 .2系统具体功能模块基本介绍143 .2.1 发件箱143 .2.2 收件箱143 .2.3 通讯录15第4章 系统详细设计及系统实现164 .1 章节内容总体介绍164 .2各模块功能详细设计164 .2.1 发送邮件功能的实现164 .2.1.1 发送普通邮件功能174 .2.1.2 邮件附件的功能实现224 .2.2 收取邮件功能的实现234 .2.3 通讯录功能的实现304 .2.4其他功能324 .2.4.1 其他界面实现与通讯录的连接功能324 .2.4.2 邮件未存储对用户提示功能324 .2.4.3 复制、删除邮件功能344 .2.4.4 用户信息设置功能35结束语38谢 辞39参考文献40前 言邮件系统是一套单独的系统,要有自己的服务器,在邮件系统中可以设多个域,每个域中可以设多个用户,比如说我买了anymacro或快客的邮件系统,可以进行多项设置.它的数据是放在自己的服务器上.随着信息技术的提高,网络的普及于发展,越来越多的网络工具随之产生出来,网络邮箱就是其中之一,它可以通过网络来实现人们之间的通信,可以给人们的工作带来极大的方便,同时也缩短了人与人之间的距离,使人们在通信上需要花费的时间更短。该Email客户端不仅仅具有网络邮箱的功能,它可以让用户绑定多个邮箱,可以说是多个网络邮箱的公共接口,不进方便了人们的工作,还做到了有效利用网络的信息资源,极大的提高人们的工作效率,减少了很多的工作量。因此它应该是能够得到用户欢迎的一个系统。第1章 系统概述及系统分析1.1系统概述随着信息技术的提高,网络的普及于发展,越来越多的网络工具随之产生出来,网络邮箱就是其中之一,它可以通过网络来实现人们之间的通信,可以给人们的工作带来极大的方便,同时也缩短了人与人之间的距离,使人们在通信上需要花费的时间更短。该Email客户端不仅仅具有网络邮箱的功能,它可以让用户绑定多个邮箱,可以说是多个网络邮箱的公共接口,不进方便了人们的工作,还做到了有效利用网络的信息资源,极大的提高人们的工作效率,减少了很多的工作量。该系统的功能模块主要由以下部分组成:1.1.1基本设置模块该模块可以完成此用户设置和邮箱设置两大内容,其中用户设置可以完成用户的一些基本信息的设置,包括用户名、用户密码、联系方式、邮政编码、通讯地址、邮箱地址,并可以对其进行存储、浏览、查看、删除、修改、打印等操作。邮箱设置可以完成对所使用邮箱的邮箱服务器、SMTP、POP3的一些设置,也可以对这些设置进行存储、浏览、查看、删除、修改等操作。1.1.2 Email功能模块该模块可以完成网络邮箱的收取邮件、发送邮件、保存邮件的功能,并可以对这些邮件进行存储、转发、群发、浏览、删除、修改、打印等操作。此模块还具有通讯录的功能,可以存储其他网络邮箱用户的用户名和邮箱地址进行存储、修改等功能。1.2 需求分析 Email客户端的设计目的是要为了实现网络邮箱的邮件发送和收取的以些功能。为使用邮箱的用户提供便利。系统所面对的用户可以是任何普通用户,系统对于一个用户只允许以一种身份登录。用户登录后可以对系统进行管理,其主要操作是维护个人的基本信息,对其信息进行修改、存储等操作。将系统需求加以总结,得出系统需求如下:l 系统可以运行任何操作系统平台上,并具有友好的用户界面。l 系统用户类型为:任何普通用户。1.3 可行性分析1.3.1技术可行性分析Java很有雄心的宣言writeonce,runanywhere许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括MicrosoftWindows,SunsownSolaris,ApplesMacOS以及Linux。1.3.2环境可行性分析Java很有雄心的宣言writeonce,runanywhere许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括MicrosoftWindows,SunsownSolaris,ApplesMacOS以及Linux。也就是说本系统可以跨平台使用.1.3.3经济可行性分析开发此系统所用软件可在网络上下载使用。第2章 系统开发基本介绍2.1 选题背景与目的随着信息技术的提高,网络的普及于发展,越来越多的网络工具随之产生出来,网络邮箱就是其中之一,它可以通过网络来实现人们之间的通信,可以给人们的工作带来极大的方便,同时也缩短了人与人之间的距离,使人们在通信上需要花费的时间更短。该Email客户端不仅仅具有网络邮箱的功能,它可以让用户绑定多个邮箱,可以说是多个网络邮箱的公共接口,不进方便了人们的工作,还做到了有效利用网络的信息资源,极大的提高人们的工作效率,减少了很多的工作量。正是因为该系统所具有的这些优点才开发了此系统。2 .2 系统开发工具本系统在开发过程中使用java GUI和java中java mail工具包实现了email的收发和一些基本的管理功能。2 .3 系统开发环境在软件环境方面,系统的开发环境如下:操作系统:S use Linux;开发平台:java;2 .4开发技术概述2 .4.1 J2EE概述J2EE是美国Sun公司刚刚推出的一种全新概念的模型,与传统的互联网应用程序模型相比有着不可比拟的优势。目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、适用于创建服务器应用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)。J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如编写一次、随处运行的特性、方便存取数据库的JDBC(Java DataBase Connectivity)应用程序接口(API, Application Program Interface)技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。2 .4.2 Java GUI当Java在1995年的春天第一次发布的时候,它包含了一个叫AWT(AbstractWindowingToolkit)的库,用来构建图形用户界面应用程序。Java很有雄心的宣言writeonce,runanywhere许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括MicrosoftWindows,SunsownSolaris,ApplesMacOS以及Linux。为了方便用Java构建图形用户界面,Sun最初提供了一个在所有平台下具有的独特Java外观的图形界面库。Sun在applet技术策略方面的首要伙伴Netscape提出applets应该维持和运行时平台一样的外观。他们希望applets在某一平台下在显示和行为上能够像其他应用程序一样。为了实现Netscape的本地外观的目标,在JDK的第一个发布版中包含了AWT这个库。AWT的缺省实现使用了对等机制,即每一个JavaGUI窗口部件都在底层的窗口系统中有一个对应的组件。例如,每一个java.awt.Button对象将在底层窗口系统中创建一个唯一对应的button。当用户点击那个按钮的时候,事件将从本地实现库传送到Java虚拟机里,并且最终传送到与java.awt.Button对象相关联的逻辑。对等系统的实现以及Java组件与对等组件之间的交流的实现都隐藏在底层JVM实现中,Java语言级的代码仍然跨平台。于1997年JavaOne大会上提出并在1998年5月发布的JFC(JavaFoundationClasses)包含了一个新的使用Java窗口开发包。这个新的GUI组件叫做Swing,感觉到它是对AWT的升级,并且看起来对Java占据计算机世界很有帮助。尽管Swing仅仅是这个新组件的指代名称,它一直持续使用到今天。可能是因为这个名称太贴切了,Swing尝试着以以下几种方式改变公认的观点:AWT依赖对等架构,用Java代码包装本地窗口部件,Swing却根本不使用本地代码和本地窗口部件AWT把绘制屏幕交给本地窗口部件,Swing自己的组件绘制自己,因为Swing不依赖本地窗口部件,它可以抛弃AWT的最小公分母的方法并在每个平台下实现每个窗口部件,从而创建一个比AWT更强大的开发工具包从最开始Java就提供了构建跨平台的窗口GUI应用程序库,从AWT,Swing到现在的SWT和JFace。最初的工具包能力微弱,但是后来提供的工具包认识到之前工具包的缺点并取得了巨大的进步。SWT和JFace不仅使Java成为一个构建桌面应用程序的可行的选择,也使之成为一个具有优势的开发平台。尽管过去对得到轻便和强大的Java系统的尝试必然意味着接受它在GUI方面的缺点,如今这个不足已经不存在了,Java终于可以统领它在桌面计算应用方面的位置了。2 .4.3 Java mail想将邮件工具结合到您独立于平台的 Java 解决方案中吗?再没有比 JavaMail API 更合适的了,它提供了个独立于协议的模块,能用于 IMAP、POP、SMTP、MIME 和其它涉及因特网的消息传递协议。现在,有了 JavaBeans Activation Framework (JAF)的支持,您的应用程序经由 JavaMail API 就能启用邮件功能啦。第3章 系统总体设计3 .1 系统功能模块划分模块分析是描述系统需求的一个过程,需要将需求分析中的感性描述进行抽象,提取出要实现的功能,这是整个系统开发的一个关键过程。模块分析的第一步,是描述Email客户端的功能,以此确定系统的功能需求。本Email 客户端对任何一个用户都是普通用户,无管理员设置,对每一个用户都具有普通邮箱所具有的收取、发送邮件的功能,因此根据用户操作需求,将系统划分为如下功能,并对其模块的划分和功能进行描述.整个系统的模块结构如图3.1所示,此图将Email客户端划分为三大模块,这些模块又是由若干个子模块构成的,形成一个结构紧凑功能明确完整,子模块的划分见3.2 系统具体功能模块的基本介绍。 Email客户端收件箱发件箱通讯录图3.13 .2系统具体功能模块基本介绍本部分主要介绍Email客户端的一些基本功能,主要描述了收件箱、发件箱、和通讯录所具有的功能,详细设计见第4章内容。3 .2.1 发件箱发件箱可以通过用户设置发送用户所需要的邮件信息,本页面可以实现查看已保存邮件信息、重发已发邮件、转发所收邮件、邮件标记、编辑邮件、新建邮件、删除邮件和打印邮件、发送,抄送、密送、发送附件、存储邮件、未存储提示等功能,具体功能图如图3.2.1发件箱发送已存邮件查看保存邮件新建邮件重发邮件打印邮件删除邮件存储邮件编辑邮件图3.2.13 .2.2 收件箱收件箱可以通过用户设置收取用户所需要的邮件信息,本页面可以实现查看所收取的邮件信息、转发邮件、群发邮件、邮件标记(标记已读和未读)、编辑和存储邮件、删除邮件和打印邮件等功能,具体功能图如图3.2.2收件箱查看邮件转发邮件群转发邮件邮件标记打印邮件删除邮件存储邮件编辑邮件图3.2.23 .2.3 通讯录通讯录可以存储用户的好友信息,可以方便用户完成对邮件信息的发送,尤其是转发和群组发送功能,通讯录的存在在很大程度上方便了使用系统的用户。本通讯录可以实现查看好友、增加好友、删除好友、编辑好友信息、删除好友信息等功能,本系统还可以建立多个通讯录,每个通讯录都可以对所存用户进行分组,以便方便邮件的发送,存储通讯录的文件还可以转存,即修改当前通讯录的存放位置,其基本功能图如图3.2.3通讯录编辑通讯录文件增加新通讯录编辑好友信息查看好友增加好有删除好友删除好友删除通讯录图3.2.3第4章 系统详细设计及系统实现4 .1 章节内容总体介绍系统分析完成后,进入系统的设计阶段这是整个系统实现过程中非常重要的一个阶段。本章节描述了系统设计的详细过程和内容及实现过程。4 .2各模块功能详细设计4 .2.1 发送邮件功能的实现4 .2.1.1 发送普通邮件功能实现此功能需要引入java mail 工具包中的以下包import javax.mail.*;import javax.mail.internet.*;构造sendMail类的主要代码如下public class sendMail private String SMTP,mailFrom,mailTo,mailCC,mailTitle,mailBody,mailEncode;private String userName,userPass;private Object attachFileList;private boolean isAuthentic = false;public sendMail()/初始化参数代码段 this.SMTP = ; this.mailFrom =; this.mailTo = ; this.mailCC = ; this.mailTitle = ; this.mailBody = ; this.mailEncode = BIG5;/为用户提供参数设置接口/在本系统中通过以下方法实现对用户写入的信息加以传递public void setFrom(String from)this.mailFrom = from;public void setTo(String to)this.mailTo = to;public void setCC(String cc)this.mailCC = cc;public void setBody(String body)this.mailBody = body;public void setTitle(String title)this.mailTitle = title;public void setSMTP(String smtp)this.SMTP = smtp;public void setUserName(String userName)this.userName = userName;public void setPassword(String pass)this.userPass = pass;public void setAttachFile(Object fileListAry)this.attachFileList = fileListAry;/设置文字编码代码如下public void setEncode(String encode)this.mailEncode = encode;public int send(boolean hasSMTPAuth) this.isAuthentic = hasSMTPAuth;/检查参数是否安全 if(!checkParameters(isAuthentic) return 1; else Properties prop = new Properties();/设定SMTP Server prop.put(mail.smtp.host,this.SMTP); Session mailConn = Session.getDefaultInstance(prop,null); Message msg = new MimeMessage(mailConn);try msg.setHeader(Content-Transfer-Encoding,this.mailEncode); reEncode(); /设置邮件的地址和邮件的编码 msg.setFrom(new InternetAddress(this.mailFrom); /Set reciever e-mail address and nickname msg.setRecipient(Message.RecipientType.TO, new InternetAddress(this.mailTo); if(this.mailCC.trim().length()!=0) msg.setRecipient(Message.RecipientType.CC, new InternetAddress(this.mailCC); /设定信件标题 if(this.mailTitle.trim().length()=0) msg.setSubject(无标题信件); else msg.setSubject(this.mailTitle); Multipart mp = new MimeMultipart(); MimeBodyPart mbpBody = new MimeBodyPart(); mbpBody.setContent(this.mailBody+ this.mailEncode); MimeBodyPart mbpFile; for(int i=0;iattachFileList.length;i+) String fullPath = this.toBIG5(attachFileListi.toString(); mbpFile = new MimeBodyPart(); FileDataSource fds = new FileDataSource(fullPath); mbpFile.setDataHandler(new DataHandler(fds); mbpFile.setFileName(fds.getName(); mp.addBodyPart(mbpFile); mp.addBodyPart(mbpBody); /將內容加入 msg.setContent(mp); if(isAuthentic) /送信 prop.put(mail.smtp.auth,isAuthentic); Transport trans = mailConn.getTransport(smtp); try trans.connect(this.SMTP,this.userName,this.userPass); trans.sendMessage(msg,msg.getAllRecipients(); return 0; catch(Exception ex) ex.printStackTrace(); return 2; finally trans.close(); else try Transport.send(msg); return 0; catch(SendFailedException ex) System.out.println(ex.toString(); return 3; catch(Exception ex) ex.printStackTrace(); return 4; private boolean checkParameters(boolean hasSMTPAuth) if(SMTP.trim().length()=0 | mailFrom.trim().length()=0 | mailTo.trim().length()=0) return false; else if(hasSMTPAuth) if(this.userName.trim().length()=0) return false; else return true; else return true; private void reEncode() if(this.mailEncode.toUpperCase()=BIG5) this.mailFrom = toBIG5(mailFrom); this.mailTo = toBIG5(mailTo); this.mailTitle = toBIG5(mailTitle); this.mailBody = toBIG5(mailBody); else if(this.mailEncode.toUpperCase()=UTF8) this.mailFrom = toUTF8(mailFrom); this.mailTo = toUTF8(mailTo); this.mailTitle = toUTF8(mailTitle); this.mailBody = toUTF8(mailBody); private String toUTF8(String str) try str = MimeUtility.encodeText(str,UTF-8, B); return str; catch (Exception ex) return str; 图4.2.1.1 新建邮件要发送邮件之需要使用已经建好的sendMail类即可,功能代码如下:sendMail mail=new sendmail();mail.setMailTo(*);mail.setMailFrom(*);mailsend();4 .2.1.2 邮件附件的功能实现此功能实现代码如下:public class AttachExample public static void main (String args) throws Exception String host = args0; String from = args1; String to = args2; String fileAttachment = args3;/ 获得系统参数 Properties props = System.getProperties();/设置邮件的服务器 props.put(mail.smtp.host, host); / 获得Session Session session = Session.getInstance(props, null); MimeMessage message = new MimeMessage(session); / Define message message.setFrom(new InternetAddress(from); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to); message.setSubject(Hello JavaMail Attachment); MimeBodyPart messageBodyPart =new MimeBodyPart();/ create the message part messageBodyPart.setText(Hi);/fill message Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); / Part two is attachment messageBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(fileAttachment); messageBodyPart.setDataHandler(new DataHandler(source); messageBodyPart.setFileName(fileAttachment); multipart.addBodyPart(messageBodyPart); / 将多个附件加入信件中 message.setContent(multipart); / 发送带附件的邮件,此功能代码结束 Transport.send( message ); 4 .2.2 收取邮件功能的实现邮件的收取可以使用java Mail API的方法,主要的操作过程为:获取javax.mail.Session实例,并进而获得javax.mail.Store实例。利用javax.mail.Store实例获得缺省收件箱(INBOX)javax.mail.Folder实例。使用javax.mail.Folder对象提取新邮件,存储为javax.mail.Message对象数组。创建javax.mail.FetchProfile以(潜在地)优化对特定邮件组成成分的提取。这里的javax.mail.FetchProfile类提供邮件协议提供者可选参数,其目的是更有效地实现邮件组成成分的预提取此功能的主要代码如下:String pers = null;String addr = null;if(a instanceof InternetAddress &(pers=(InternetAddress)a).getPersonal()!=null)addr=pers+ +;elseaddr = a.toString();return addr;Session mailsession=Session.getInstance(System.getProperties(),null);mailsession.setDebug(false);Store store=mailsession.getStore(protocol);/protocol为连接协议,IMAP或是POPstore.connect(mailhost,-1,user,passwd);/mailhost主机,user为用户名,passwd为密码Folder folder = store.getFolder(INBOX);try folder.open(Folder.READ_WRITE); catch (MessagingException ex) folder.open(Folder.READ_ONLY);Message message=folder.getMessages();FetchProfile fp=new FetchProfile();fp.add(FetchProfile.Item.ENVELOPE);fp.add(FetchProfile.Item.FLAGS);fp.add(X-Mailer);folder.fetch(message,fp);int id=0,j=0;for(int i=0;irequest.getParameter(id).length();i+)/假设要阅读第ID个邮件。id=id*10+(request.getParameter(id).charAt(i)-48);for(j=0;jid;j+);messagej.setFlag(Flags.Flag.SEEN,true);out.println(“主题:”+messagej.getSubject();String from=new String();Address fr=messagej.getFrom();if(fr!=null) boolean tf=true;for(int i=0;ifr.length;i+) from=from+getDisplayAddress(fr);out.println(“from”+from+);Object o=messagej.getContent();if (messagej.isMimeType(text/plain) /就可直接读出了。out.println(String)o+ );else if(messagej.isMimeType(multipart/*) Multipart mp=(Multipart)o;Part part=mp.getBodyPart(0);String msg=(String)part.getContent();StringBuffer buf=new StringBuffer(msg.length()+6);char ch= ;for(int i=0;imsg.length();i+)/若遇到换行就转为 ch=msg.charAt(i);if(ch=n)buf.append();else buf.append(ch);out.println(buf.toString();elseout.println(现在还无法显示:+messagej.getContentType();folder.close(true);store.close();String pers = null;String addr = null;if(a instanceof InternetAddress &(pers=(InternetAddress)a).getPersonal()!=null)addr=pers+ +;elseaddr = a.toString();return addr;Session mailsession=Session.getInstance(System.getProperties(),null);mailsession.setDebug(false);Store store=mailsession.getStore(protocol);/protocol为连接协议,IMAP或是POPstore.connect(mailhost,-1,user,passwd);/mailhost主机,user为用户名,passwd为密码Folder folder = store.getFolder(INBOX);try folder.open(Folder.READ_WRITE); catch (MessagingException ex) folder.open(Folder.READ_ONLY);Message message=folder.getMessages();FetchProfile fp=new FetchProfile();fp.add(FetchProfile.Item.ENVELOPE);fp.add(FetchProfile.Item.FLAGS);fp.add(X-Mailer);folder.fetch(message,fp);int id=0,j=0;for(int i=0;irequest.getParameter(id).length();i+)/假设要阅读第ID个邮件。id=id*10+(request.getParameter(id).charAt(i)-48);for(j=0;jid;j+);messagej.setFlag(Flags.Flag.SEEN,true);out.println(“主题:”+messagej.getSubject();String from=new String();Address fr=messagej.getFrom();if(fr!=null) boolean tf=true;for(int i=0;ifr.length;i+) from=from+getDisplayAddress(fr);out.println(“from”+from+);Object o=messagej.getContent();if (messagej.isMimeType(text/plain) /就可直接读出了。out.println(String)o+ );else if(messagej.isMimeType(multipart/*) Multipart mp=(Multipart)o;Part part=mp.getBodyPart(0);String msg=(String)part.getContent();StringBuffer buf=new StringBuffer(msg.length()+6);char ch= ;for(int i=0;imsg.length();i+)/若遇到换行就转为 ch=msg.charAt(i);if(ch=n)buf.append();else buf.append(ch);out.println(buf.toString();elseout.println(现在还无法显示:+messagej.getContentType();folder.close(true);store.close();在Folder对象中可以用getMessageCount()和getUnreadMessageCount()方法来取得总共有多少封信和共有多少封信未读。但是如果我们需要在我们的java项目中增加对Hotmail邮箱(此邮箱有一个限制就是它并不提供POP3或者SMTP服务,也就是说一般的邮件客户端工具无法使用这个邮箱)的支持,那往往会不知从什么地方开始入手,因为SUN公司提供的java mail本身并不提供对除了POP3/IMAP以及SMTP外其他协议的支持。如何解决此问题呢? 但事实上,Java mail只是定义了一组平台无关、独立于通讯协议的邮件程序框架,或者说是接口,它是作为Java的可选包存在的。因此可以这样说:Java Mail并不关心所使用的协议,不管是POP3、SMTP、IMAP当然还有Hotmail用的HTTP协议。对于Java Mail的客户端而言也是这样的,下图就是一个最简单的Java Mail结构图,通过Transport进行邮件的发送,通过Store实现对邮件的收取,而不同协议的实现,Java Mail里的概念叫做Provider,只需要根据Java Mail定义的接口实现自己的Provider即可。 为了实现通过Java Mail访问Hotmail邮箱,我们就需要架起Java Mail接口与Hotmail服务所提供的访问接口之间的桥梁。在这之前我们必须首先了解Hotmail所使用的接口协议。Hotmail通过地址 h
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!