版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计I报告题目:电子邮件系统设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指 导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢 的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我 为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示 了谢意。作者签名: 日期:指导教师签名: 日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有 权保存
2、毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务; 学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为 目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取 得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其 他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个 人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果 由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定
3、,同意学 校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查 阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和 汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名:日期: 年 月1、课题名称电子邮件系统设计2、课题内容设计一个电子邮件系统,包括客户端和服务器端的设计、邮件处理过程建模和具体功能 的实现等。3、系统分析电子邮件(e-mail)是因特网上使用得最多的和最受用户欢迎的一种应用。电子邮件 把邮件发送到ISP的邮件服务器,并放在其中的收信人邮箱中,收信人可随时上网到 ISP的
4、邮件服务器进行读取。电子邮件不仅使用方便,而且还具有传递迅速和费用低廉 的优点。现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。本系统分析中给出了电子邮件服务器和电子邮件客户端的简介,同时给出了本次试 验中客户端的主要功能和总体框图。邮件服务器按照提供的服务类型,可以分为发送邮件服务器(简称发送服务器)和接 收邮件服务器(简称接收服务器)。发送邮件服务器使用邮件发送协议,现在常用的是SMTP所以通常发送邮件服务器也称为SMTF服务器;接收邮件服务器使用接收邮件协议,常用的有 POP動议和IMAP协议,所以通常接收 邮件服务器也称为POP3!务器或IMAP服务器。SMTP( Simple
5、 Mail Tran sfer Protocol),即简单邮件传输协议,是 In ternet 传送E-mail的基本协议,也是TCP/IP协议组的成员。SMTP协议解决邮件系统如何通过一条链路,把邮件从一台机器传送到另一台机器上 的问题。SMTP协议的特点是具有良好的可伸缩性,这也是它成功的关键。它既适用于广域 网,也适用于局域网。SMTP协议由于非常简单,使得它得到了广泛的运用,在In ternet上能够发送邮件的服务器几乎都支持SMTP协议。P0P3( Post Office Protocol 3),即邮局协议第3版,是In ternet 接收邮件的基本协议,也是TCP/IP协议组的成员
6、。RFC1939描述了 POP3协议,网址为“ /rfc/rfc1939.txt”。POP3既允许接收服务器向邮件用户发送邮件,也可以接收来自SMT服务器的邮件。邮件客户端软件会与POP3艮务器交互,下载由POP:服务器接收到的邮件。基于POP3 协议的邮件系统能提供快速、经济和方便的邮件接收服务,深受用户的青睐。IMAP (Internet Message Access Protocol ),即互联网消息访问协议,是一种功能比POP3更强大的新的接收邮件协议。目前最新的IMAP协议版本为IMAP4 RFC2O60苗述了 IMAP4 网址为“ http:/w
7、/rfc/rfc2060.txt”。IMAP4与POP3协议一样提供了方便的下载邮件服务,允许用户在脱机状态下阅读已经下载到本地硬盘的邮件。但IMAP 4的功能远远不只这些,它还具有以下功能:摘要浏览邮件的功能。选择性下载附件的功能。鼓励用户把邮件一直存储在邮件服务器上。允许用户把远程邮件服务器上的邮箱作为信息存储工具。MIME( Multipurpose In ternet Mail Exte nsio ns,多用途 In ternet 邮件扩充标准)不是邮件传输协议,而是对邮件格式所作的规范。RFC2045 RFC2046和 RFC2047寸 MIME作了描述。MIM
8、E是对RFC822的扩充,RFC822规定了内容只包括采用ASCII编码的纯文本的邮件 的格式,而MIME允许在邮件中包含附件。整个电子邮件系统的工作过程及一些涉及到的协议如下图所示:E-mail服务器A容户机B电子邮件系统包含:电子邮件服务器端和电子邮件客户端。SUN公司制定了 JavaMail API,它封装了按照各种邮件通信协议,如IMAP POP3和SMTP与邮件服务器通信的细节,为 Java应用程序提供了收发电子邮件的公共接口,参见下图:Java帧ail应用JavaMail API主要位于javax.mail 包和ernet 中,下图为其中主要 类的类框图
9、1. javax.mail.Sessio n 类:表示邮件会话,是 JavaMail API的最高层入口类。2. javax.mail.Store类:表示接收邮件服务器上的注册用户的存储空间,通过Store类的getFolder()方法,可以访问用户的特定邮件夹3. javax.mail.Folder类:代表邮件夹。4. javax.mail.Message类:代表电子邮件。5. javax.mail.Address类:代表邮件地址。6. javax.mail.Tra nsport类:根据指定的邮件发送协议(通常是 SMTP,通过指定的邮件发送服务器来发送邮件电子邮件服务器的最简模型如下图:运
10、服务器 的服务器计算机服务器将谙求的页面发送回来燃的运行Web 浏览器的计算机电子邮件服务器的结构一般如下图所示:电子邮件服务器还能在本机和客户端进行连接使用(即主机上的SMTP服务器还可能与其他SMT用艮务器会话以发送邮件)如下图:3003 HOwSluFfWrhii按照MIME规范,电子邮件包括邮件头和正文两部分。由M牛头中包括日期、发送者地 址、接收者地址和主题等信息。正文部分可以包括普通文本内容,还可以包括一个或多个附件WimeBodyPart 1 (t ext/Plain)Hov are you<附件八 att chi. rar <MimeBodyPart2附件炉 att
11、 ch2. rar 弋-Him©Body?art 3正文MimeMult iPart*日期:Thu. 30 NOV 2000 16:54.54 +0800 (CST)发件人:邮件头收件人:admir主题參 hellojavax.mail.Message 抽象类表示邮件,它的具体子类为javax.mail.MimeMessage类,它提供了读取和设置邮件中各个部分的getXXX()和setXXX()方法:setSubject(Stri ng subject)方法设置邮件的主题。setHeader(Stri ng name, Stri ng value)方法设置邮件头部的某一项。setC
12、o nten t(Object o, Stri ng type)方法设置邮件的正文。javax.mail.Address抽象类表示邮件地址,它的最常用的子类是javax.mail.I ntern etAddress类。In ternetAddress类表示 In ternet网 上通用 的邮件地址,形式为admin 或者“ Admin<admin>。电子邮件客户端是安装在个人电脑上面的一种软件,用于和电子邮件服务器端的连 接。基本上所有的客户端一般都有以下四个基本功能: a.通过POP3攵取用户各种邮箱的邮件。由于考虑到 POPular服务器地址的不同, 但又可以接收不同邮箱地址的
13、邮件,所以增加了这个功能。b.在线阅读邮件,这个功能是电子邮件系统必备的功能。 c.接收保存邮件,用户可以再阅读邮件之后,将其保存起来,在需要的时候再次 阅读。 d.在线处理邮件,如果收到一些垃圾邮件或者不是很重要的邮件,那么用户可以 将它们放到垃圾箱或者然后在去垃圾箱中将它彻底删除,这是最好的办法。这个时候就 要引入在线处理邮件功能,这个功能能够删除邮件。 e.发送附件。有时候邮件太长,或者是表格、Word文档,一正文方式发送不太方便,这样可以引用一个附件功能。及那个这些表格或Word文档以附件的形式上传,让后发送。在扩充一下,提供可以发送多个邮件的功能。(本功能为扩展功能,本系统并未实 现
14、)。f.接收附件,相对于发送附件而言,接收附件的功能必不可少。不然不能阅读邮 件的内容。同样,应该扩充可以接受多个附件的功能。 g.SMTP验证,当前大部分的SMTP服务器,在用户发送邮件的时候,都需要进行用 户名和密码的验证。 h.邮件文件夹管理,该功能提供了用户可以再除了了有收件箱等必须得文件夹 时,可以根据自己的需要创建新的文件夹用于更好大的管理自己收到的邮件,还可以重 命名和删除用户自己创建的文件夹。*i.回复邮件,该功能是电子邮件系统必备的功能下面列出了本系统的总体功能:电子邮件系统3 回复邮件接收邮件发送釘件.SMTP邮件脈务窿扯送方I畫这閃件|7件h务綽用户代理接收方冏户比理&g
15、t;以附件回复以文本回复总之,由上面的电子邮件服务器和客户端的分析可知该电子邮件系统收发邮件的整个过程和图示如下:(1) 发信人调用用户代理来编辑要发送的邮件。用户代理用SMTP把邮件传送给发送端邮件服务器。(2) 发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。(3) 运行在发送端邮件服务器的 SMTP客户进程,发现在邮件缓存中有待发送的 邮件,就向运行在接收端邮件服务器的 SMTP服务器进程发起TCP连接的建立。(4) TCP连接建立后,SMTP客户进程开始向远程的SMTP服务器进程发送邮件。 当所有的待发送邮件发完了, SMTP就关闭所建立的TCP连接。运行在接收端邮件服务器中的 S
16、MTP服务器进程收到邮件后,将邮件放入收 信人的用户邮箱中,等待收信人在方便时进行读取。收信人在打算收信时,调用用户代理,使用P0P3(或IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中的取回(如果邮箱中有来信的话)。4、系统设计本系统基于JavaMial API采用B/S设计结构。使用Apache Tomcat做为WE服务器 和JSP Servlet的容器。JDK中并不包含JavaMail API。为了开发JavaMail应用程序,需要从SUN公司的网 站下载JavaMail API及其实现的类库,该类库由两个JAR文件组成:mail.jar 和activation .jar 。Ja
17、vaMail应用程序在初始化过程中需要执行如下步骤。步骤(1)设置JavaMail属性:Properties props = new Properties。;props.put("mail.tra tocol", "smtp");props.put("tocol", "imap");props.put("mail.smtp.class", "com.s un. mail.smtp.SMTPTra nsport");props.p
18、ut("mail.imap.class", "com.s un .mail.imap .IM APStore"); props.put("mail.smtp.host", host name);以上代码设置了如下JavaMail属性:mail.tra tocol:指定邮件发送协议。tocol :指定邮件接收协议。mail.smtp.class:指定支持SMTP协议的Tran sport具体类,允许由第三方提供。mail.imap.class:指定支持IMAP协议的Store具体类,允许由
19、第三方提供。mail.smtp.host :指定采用SMTP协议的邮件发送服务器的IP地址或主机名 步骤(2)调用 javax.mail.Session类的静态方法 Session.getDefauItlnstance()获得Session实例,该方法根据已经配置的 JavaMail属性来创建Session实例:Sessi on mailsessi on = Sessi on. getDefaultI nsta nce(props);步骤(3)调用 Session 的 getStore(String protocol)方法来获得 Store 对象,参数protocol指定接收邮件协议:Stor
20、e store = mailsessi on. getStore("imap");步骤(1)把 mail.imap.class 属性设为 com.sun.mail.imap.lMAPStore ,因此以上 getStore()方法返回 com.sun.mail.imap.lMAPStore 类的实例。步骤(4)调用Store对象的connect()方法连接到接收邮件服务器。调用 connect() 方法时,应该指定接收邮件服务器的主机名或IP地址、用户名和口令。store.c onn ect(host name,user name, password);获得了 Store对
21、象后,就可以通过它来访问邮件服务器上的特定邮件用户了。通常 会对邮件用户执行以下操作。操作(1)创建并发送邮件:/创建邮件msg = new MimeMessage(mailsessio n);In ternetAddress toAddrs=I nternetAddress.parse("admi n mydomai n. com",false);/设置邮件接收者msg.setRecipie nts(Message.Recipie ntType.TO, toAddrs);/设置邮件的主题msg.setSubject("hello");/设置邮件的发送者
22、msg.setFro m(new In ternetAddress("admi n mydoma in .com");/设置邮件的正文msg.setText("How are you");/发送邮件Tran sport.se nd(msg);Tran sport的静态方法sen d(Message)负责发送邮 件服务 器,邮 件发送 协议由mail.tra tocol属性指定,邮件发送服务器由mail.smtp.host 属性指定。操作(2)打开in box邮件夹收取邮件:/获得名为“ in box ”的邮件夹Folder folde
23、r=store.getFolder("i nbox");/打开邮件夹folder.ope n( Folder.READ_ONLY);/获得邮件夹中的邮件数目in box.");/获得邮件夹中的未读邮件数目System.out.pri ntl n("You have "+folder.getU nreadMessageCo un t()+"un readmessages in in box.");在IMAP协议中,inbox由M牛夹是邮件用户的保留邮件夹,用户不允许删除该邮件夹,由M牛服务器把所有接收到的新邮件都存在该邮件夹中
24、。操作(3)从邮件夹中读取邮件:/从邮件夹中读取第一封邮件Message msg=folder.getMessage(1);System.out.println(”the first message in inbox");/获得邮件的发送者、主题和正文System.out.pri ntl n("From:"+msg.getFrom()O);System.out.pri ntl n("Subject:"+msg.getSubject();System.out.pri ntl n("Text:"+msg.getText();系统
25、设计中,给出了本次试验的UMI建模和系统各个模块的划分。一、UML#模1. 本系统的用例图:U|j load accessoTY是从User中泛化出来的。Upload accessory 表示为上传附件用例;Sending mail表示为 发送邮件用例;Lon gin表示为登录用例;Receivi ng mail表示为接收邮件用例;Savi ngmail表示为保存邮件用例;Saving accessory表示为保存附件用例;Folder表示为管理 邮件文件夹用例;Create new folder表示为创建新的邮件文件夹用例;Ren ame folder表示为重命名创建的邮件文件夹用例;Del
26、ete folder表示为删除创建的邮件文件夹;Delet ing mail表示为删除用户收到的邮件用例。2. 本系统的时序图和对应的协作图:(1)用户发送邮件的时序图:lociin mmil游tern1. input user name and a secret code ,sele n>thie mail servernu:2.summltuseridt口 systemH3.point out thatuser send mailn<t4 :nput rn lil address andiheme of the opposite sidecontents arid so on:
27、>5.add accessory6.point put the success of sendingWarmatron从上图中可以看出,首先用户得登录系统,在登录系统时还可以选择登入服务器。用户正常登录系统后,系统会将用户的ID保存在session变量中,并传递给发送和回复邮件模块。用户打开发送邮件界面就可以发送邮件了。界面提示输入相关邮件信息,按 提示输入收件人邮件地址、主题和内容等信息后,单击“发送”按钮就可以发送了。有 时候需要发送附件,单击“添加附件”命令选择需要添加的文件就可以了。最后提示发 送成功。(2)用户接收邮件的时序图:Igin mail$过沖1口机就阳鉗orv1 .i
28、nput user name and g secret code.selecT2Qe verson languagesummit user id to systerp3 show thist of mails4.read the cintents of mail5.iod accessory6.save mail从上图中可以看出,用户首先还是先登录邮件系统,然后系统将所有提交用户的ID保存到session变量中,并传递给接收邮件模板。该界面列出了所有的邮件,用户可以打 开某个邮件阅读。有时候邮件是以附件的形式发送的,这样用户在接收邮件是就需要先 下载附件,然后保存。(3)用户发送邮件的协作图:
29、这是与上面用户发送邮件的时序图对应的协作图。5: add accessory(4) 用户接收邮件的协作图:这是与上面用户接收邮件的时序图对应的协作图Receiver: user八6: save nathe module of receiving malof mailname and a secret code.selectthe mail serverloadaccessory5; Foad accessorylogin mallsystemrim it user rdV3. 本系统的总体分析模型(类图):PMes?ageSubject : Strinfl 0>fwm : String:
30、String:String>bcc : StringQ>dte :別ring 住阳ize - int述:String rEadFlzg : baolejnFMesjQtQassembleAddresCgotFnjmQ setFromO *geToQ*MtToQ *getCCQ*setCC0 %etBCOOsrtBtCO getSizeQ setSizaQ getSubjectO etSubjeciO 牛 getT 怯 etT exiQMailUserOatdrlNsme : URLfTTie ijstsiOA ; Sdon: Store§turrFoldr: Folder
31、'turrMsg ; Msfag«MiilUserD ataQ getUR LNmeQ stiURLNamsO %fiSesionO ietSessioiiQ g&tStoreQ*getCurrFol<JeO setCurrFoldtrQ doDel-teFatdeO do£ 佬 ateFHdEO doEenameFHdeO daDektelvIfessA jeQ dQAssembleWessdgeO 曹 doAssembl 电肘 esssg 旳 dcSeftdMsagftQ daAppendMessageQ该类图中包含了两个类:PMessage和 M
32、ailUserData。其中 PMessage类对 Message类的重新封装,提供更方便的读取邮件信息的方法。例如,在Message类中读取邮件地址的方法,如getTo()方法返回Address类型,如果要把它显示到网页上,必须把Address数组转化为对应的字符串。PMessage的构造方法PMessage对Message数据重新圭寸装。JSP 网页调用PMessage的getTo方法可以直接获得字符串类型的地址。MailUserData类用来 存放用户的相关信息,还有对邮件文件夹操作的一些方法的定义,还有邮件管理的一些 操作的定义,例如:发送邮件,删除邮件等。4. 本系统的活动图:a.用
33、户接收邮件的活动图,在接收邮件是可以分两种方式,一种是文本形式,另一种是附件形式。接收邮件后,用户可以并列做3件事,即保存邮件、删除邮件和将邮件放入垃圾箱。至此,用户接收邮件的活动完成。b.用户发送邮件的活动图,在发送邮件的活动中,还是一样,用户首先必须登录邮件系统,这样,以后的操作才可以进行。发送的主要活动就是发送邮件一个,它以两种形式发送的。Qser nameas the form oftoerejnew fc-lder命名创建的文件夹和删除创建的文件夹thetofm of appendixsending mailc.用户管理邮件文件夹的活动图,用户可以根据自己的需要新建邮件文件夹、重新u
34、ser name and seerftt code is erior _9delete folderand secret code is errorename 如触rlogin mail systemlogini mjjl 卒t电mfolder5.本系统的组件图p-1I PMessagLTJ eJar"1I MallUserDatajarcompose jspshowmessaaejspJI listonefof_ derjsp-n login.jsp<-connectjs11listaiifoider.jsp二、系统模块的划分按照本系统的总体功能划分,可以将这个电子邮件系统分
35、成5大模块,首先是登录模块,作为验证需要;其次是接收邮件和附件模块,该模块负责邮件的接收,有的是以 附件形式接收的,再次是发送和回复模块,该模块负责该对方发送邮件,有的还是以附 件形式发送的;接着是邮件处理模块,该模块负责邮件的阅读、保存和删除等操作;然 后是邮件文件夹的管理,该操作负责邮件文件夹的新建、重命名和删除等操作。下面累 出了本系统的模块体系,如图:1 登录模块登录模块主要有login.jsp 完成,其中包括下图中的几部分。(1) 选择登录服务器,本系统采用了 MerakMailSErvler公司提供的Mail服务器使 用版本。(2) 选择指定邮件地址和密码。在本系统中有所提供的Ma
36、il服务器创建了 2个账 户进行登录。必须选用正确的邮件地址和密码才可以登录,不然会报错。登录模块的图示:2. 接收邮件和附件模块接收邮件和附件模块主要由showmessage.jsp文件完成,包括下图中的几个部分(1)接收邮件。一个邮件系统最基本的功能就是能够接受对方发送的邮件。(2)保存附件。如果对方是以附件的形式发送邮件给用户,那么用户在接收邮件 时,必须先下载邮件,将其保存到本地机之后,才能阅读。接收邮件和附件模块的图示:3. 发送和回复邮件模块发送和回复邮件模块主要由compose.jsp文件元成,包括图中的几个部分。(1)编写新邮件。该部分也是电子邮件系统中最基本的功能。(2)上传
37、附件。在编写邮件时,邮件内容可以以附件的形式发送,这样就需要先 将附件上传到服务器,然后在发送给对方。发送和回复邮件模块的图示:发送和回复邮件模块编写新邮件4. 邮件处理模块邮件处理模块主要由list on efoldr.jsp文件完成,包括图中的几个部分。(1)显示邮件列表。在登录后的首页中就以分页显示的形式列出了所有的邮件, 便于管理。(2)删除选中邮件。在选中删除的邮件后,可以单击该命令删除邮件。(3)显示错误信息。在出现一些登录错误,删除错误,下载错误是,将显示不同 的错误信息提示用户。邮件处理模块的图示:邮件处理模块显示邮件列表删除选中邮件显示错误信息5. 邮件文件夹管理模块邮件文件
38、夹管理模块主要是由listallfolders.jsp文件完成,包括图中的几个部分。(1)创建新的邮件文件夹。用户可以根据自己的需要创建新的邮件文件夹,便于 管理用户的邮件。(2)重命名邮件文件夹。用户可以重新命名自己创建的邮件文件夹。(3)删除邮件文件夹。用户可以删除自己创建的邮件文件夹。邮件文件夹管理模块的图示:邮件文件夹管理模块创建邮件文件夹3重命名邮件文件夹删除邮件文件夹5、系统实现1. 服务器的安装和配置1. 在做本次系统之前,必须配置JSP的服务器和电子邮件的服务器。(1) JSP的服务器,主要使用的是Tomcat,同时在安装Tomcat服务器之前,必需已经安装了 SUN公司 的J
39、DK在安装Tomcat的时候主要是注意电脑环境变量的更改。安装完成后,只要在浏览 器中输入http:/localhost:8080/看是否能打开Tomcat的网页,如果能,则表示安装成功, 8080端口是Tomcat的默认端口,如果电脑上有服务已经把端口占用了,可以把占用 该端口的服务关掉,如果该服务关不掉或者比较重要,可以再Tomcat的安装目录中找到server.xml文件,将其中port="8080"改成没有被占用的端口号。(2)电子邮件服务器 的配置:在本系统中我们采用了MerakMailServler公司的Mail服务器,安装完成后,在配置中输入本次实验所需要的域
40、名和用户等信息。然后保存,配置完成2. 客户端的实现给出本系统中包含的两个类:由于代码比较多,所以这里只给出了核心代码。首先要加入一个中文字符串处理函数用于是邮件能发送中文:public String codeToStri ng(Stri ng str)/处理中文字符串的函数Stri ng s=str;trybyte tempB=s.getBytes("ISO-8859-1");s=new Strin g(tempB);return s;catch(Excepti on e)return s;1. PMessage类重新圭寸装了 Message类。(1) 重新封装Messa
41、ge类获得邮件的时间、主题、大小、内容还有地址等;public PMessage(Message msg)throws Excepti onif(msg!=null)SimpleDateFormat df = new SimpleDateFormat("yy.MM.dd 'at' HH:mm:ss ");trydate=df.format(msg.getSe ntDate()!=null) ? msg.getSe ntDate() : msg.getReceivedDate(); catch(Excepti on e)date=new Date().toSt
42、ri ng(); subject=msg.getSubject();size=msg.getSize();Object conten t=""tryconten t=msg.getC onten t();catch(Excepti on e)if(msg.isMimeType("text/plai n") && co nte nt!=null)text=(Stri ng)c ontent;from=assembleAddress(msg.getFrom();to=assembleAddress(msg.getRecipie nts(Mes
43、sage.Recipie ntType.TO);cc=assembleAddress(msg.getRecipie nts(Message.Recipie ntType.CC);bcc=assembleAddress(msg.getRecipie nts(Message.Recipie ntType.BCC);(2)构造函数 PMessage(String to,String cc,String bcc,String subj,String tex);public PMessage(Stri ng to,Stri ng cc,Stri ng bcc,Stri ng subj,Stri ng t
44、ext)to.replace('',',');cc.replace('',',');bcc.replace('',',');this.to=to;this.cc=cc;this.bcc=bcc;this.subject=subj;this.text=text;(3) 将Address数组转化为对应的字符串,用于在页面上显示;private String assembleAddress(Address addr)if(addr=n ull)retur n ""String addr
45、Stri ng=""boolea n tf = true;for (int i = 0; i < addren gth; i+) addrStri ng=addrStri ng+(tf) ? " " :", ") + getDisplayAddress(addri);tf = false;retur n addrStri ng;(4) 返回一个适合msg头的字符串。private String getDisplayAddress(Address a) Stri ng pers = n ull;String addr = nu I
46、I;if (a in sta nceof Intern etAddress &&(pers = (I ntern etAddress)a).getPers on al() != nu II) addr = pers + ""+"<"+(l nternetAddress)a).getAddress()+">" elseaddr = a.toStri ng();retur n addr;2. MailUserData 类(1)删除用户自己创建的邮件夹,但不允许删除Web应用指定的系统邮件夹;pu
47、blic void doDeleteFolder(Stri ng foldername )throws Excepti on /ca n't delete reserved folderif(folder name.equalslg no reCase("i nbox")|folder name.equalslg no reCase("trash")|folder name.equalslg no reCase("draft")|folder name.equalslg no reCase("se ndbox&quo
48、t;)throw new Excepti on ("Ca nn't delete reserved folder"); Folder folder=store.getFolder(foldername);if(!folder.exists()throw new Excepti on ("This folder does not exists"); if(folder.isOpe n()folder.close(true);folder.delete(true);(2) 修改用户自己创建的邮件夹的名字,但不允许修改Web应用指定的系统邮件夹 得名字
49、;public void doRe nameFolder(Stri ng fromn ame,Stri ng ton ame)throws Excepti on if(ton ame=n ull | ton ame.equals("")throw new Excepti on ("You do not in put new folder n ame whe n renaming folder");/can't ren ame reserved folderif(fro mn ame.equalsIg noreCase("i nbox&q
50、uot;)|fromn ame.equalsIg no reCase("trash")|fromn ame.equalsIg no reCase("draft")|fromn ame.equalsIg no reCase("se ndbox")|ton ame.equalsIg no reCase("i nbox")|ton ame.equalsIg no reCase("trash")|ton ame.equalsIg no reCase("draft")|ton ame.
51、equalsIg no reCase("se ndbox")throw new Exceptio n("Ca nn't ren ame reserved folder");Folder folderFrom=store.getFolder(fro mn ame);Folder folderTo=store.getFolder(to name);if(!folderFrom.exists()throw new Excepti on ("This folder does not exists");if(folderFrom.isO
52、pe n()folderFrom.close(true); folderFrom.re nameTo(folderTo);(3) 创建用户自己的邮件夹;public void doCreateFolder(Stri ng folder name)throws Excepti on if(folder name=n ull | folder name.equals("")throw new Excepti on ("You do not in put new folder n ame whe n creat ing folder");Folder fold
53、er=store.getFolder(foldername);if(folder.exists()throw new Excepti on ("This folder already exists"); folder.create(Folder.HOLDS_MESSAGES);(4) 把邮件添加到参数指定的邮件夹中;public void doAppe ndMessage(Message msg, Folder f)throws Excepti onMessage m=new Message1;m0=msg;f.appe ndMessages(m);(5) 根据参数指定的邮
54、件信息,如标题,收发地址和邮件内容,来构建 Message 对象;public Message doAssembleMessage(String to,String cc,String bcc,String subj,String text)throws Excepti on Message msg = new MimeMessage(sessi on);Intern etAddress toAddrs = n ull, ccAddrs = n ull, bccAddrs=n ull;if (to != n ull) toAddrs = Intern etAddress.parse(to, f
55、alse);msg.setRecipie nts(Message.Recipie ntType.TO, toAddrs);elsethrow new Messagi ngExcepti on ("No "To" address specified");if (cc != n ull) ccAddrs = Intern etAddress.parse(cc, false);msg.setRecipie nts(Message.Recipie ntType.CC, ccAddrs);if (bcc != n ull) bccAddrs = Intern et
56、Address.parse(bcc, false);msg.setRecipie nts(Message.Recipie ntType.BCC, bccAddrs);if (subj != null)msg.setSubject(subj);msg.setFrom( new In ternetAddress(urlName.getUsername() + "" +urlName.getHost();if (text != null)msg.setText(text);return msg;(6) 如果该邮件在 Trash邮件夹中,就永久删除该邮件,否则把这封邮件移到Trash邮件夹中;public void doDeleteMessage(i nt arrayOpt,Folder f)throws Excepti on for(i nt i=0;i<arrayOpt.le ngth;i+)if(arrayOpti=O)c on ti nue;Message msg=f.getMessage(i+1);if(!f.getName().equals(&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国调节阀市场规模调研及前景发展趋势分析报告
- 2025-2030年中国蓝宝石衬底行业发展现状调查规划分析报告
- 2025-2030年中国节能电器行业竞争状况及投资发展前景分析报告
- 2025-2030年中国聚丁烯管行业发展趋势及投资策略研究报告
- 2025-2030年中国网站优化行业发展动态及投资前景分析报告新版
- 2025-2030年中国纳滤及反渗透复合膜行业市场未来发展趋势及前景调研分析报告
- 2025-2030年中国磁阻同步电动机行业发展现状及投资策略预测研究报告
- 2025-2030年中国碱性电池行业运行动态及投资发展前景预测报告
- 2025-2030年中国直焊缝钢管行业发展状况及投资前景规划研究报告
- 2025-2030年中国疏浚工程行业市场竞争格局展望及投资策略分析报告
- 2025年河南鹤壁市政务服务和大数据管理局招聘12345市长热线人员10人高频重点提升(共500题)附带答案详解
- 建设项目安全设施施工监理情况报告
- 春节期间安全施工措施
- 2025年大唐集团招聘笔试参考题库含答案解析
- 建筑工地春节期间安全保障措施
- 2025山东水发集团限公司招聘管理单位笔试遴选500模拟题附带答案详解
- 2024-2030年中国建筑玻璃行业市场深度调研及竞争格局与投资价值预测研究报告
- 泌尿:膀胱肿瘤病人的护理查房王雪-课件
- 企业短期中期长期规划
- 中华民族共同体概论讲稿专家版《中华民族共同体概论》大讲堂之第一讲:中华民族共同体基础理论
- 《商务沟通-策略、方法与案例》课件 第一章 商务沟通概论
评论
0/150
提交评论