




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成员负责模块李进〔组长〕邮件效劳器治理模块、邮件治理之邮件发送模块,其他模块有参与马昌修改用户信息模块,其他模块有参与高宁邮件治理模块〔重要〕何骥越登录模块王贺注册模块网络邮件系统电子邮件作为Internet最为广泛的应用之一,在人们的工作和生活中扮演着重要的角色,应用的普及使电子邮件技术有了飞速的开展.网络电子邮件系统在当今的互联网上比比皆是,不管是windows上的普及,还linux上的稳定可靠和低廉;不管是分布式系统,还是基于P2P,都离不开邮件系统的根本原理.邮件传输原理在Internet上将一段文本信息从一台计算机传送到另一台计算机上,可通过两种协议来完成,即SMTP〔SimpleMailTransferProtocol,简单邮件传输协议〕和POP3〔PostOfficeProtocol,邮局协议3〕.SMTP>Internet协议集中的邮彳^标准.在Internet上能够接收电子邮件的效劳器都有SMTP.电子邮件在发送前,发件方的SMTP效劳器与接收方的SMTP效劳器联系,确认接收方准备好了,那么开始邮件传递;假设没有准备好,发送效劳器便会等待,并在一段时间后继续与接收方邮件效劳器联系.这种方式在Internet上称为“存储一一转发〞方式.POP3可允许E-mail客户向某一SMTP效劳器发送电子邮件,另外,也可以接收来自SMTP效劳器的电子邮件.换句话说,电子邮件在客户PC机与效劳提供商之间的传递是通过P0P3来完成的,而电子邮件在Internet上的传递那么是通过SMTP来实现.如下图:注:效劳器A是发送邮件效劳器〔SMTP〕,效劳器B是接收邮件效劳器〔POP3/IMAP〕.电子邮件的发送和接收电子邮件在Internet上发送和接收的原理可以很形象地用我们日常生活中邮寄包裹来形容:当我们要寄一个包裹的时候,我们首先要找到任何一个有这项业务的邮局,在填写完收件人姓名、地址等等之后包裹就寄出而到了收件人所在地的邮局,那么对方取包裹的时候就必须去这个邮局才能取出.同样的,当我们发送电子邮件的时候,这封邮件是由邮件发送效劳器〔任何一个都可以〕发出,并根据收信人的地址判断对方的邮件接收效劳器而将这封信发送到该效劳器上,收信人要收取邮件也只能访问这个效劳器才能够完成..电子邮件地址的构成电子邮件地址的格式是“USER@SERVER",由三局部组成.第一局部“USER〞代表用户信箱的帐号,对于同一个邮件接收效劳器来说,这个帐号必须是唯一的;第二局部“@〞是分隔符;第三局部“SERVER〞是用户信箱的邮件接收效劳器域名,用以标志其所在的位置..电子邮件的工作原理电子邮件与普通邮件有类似的地方,发信者注明收件人的姓名与地址〔即邮件地址〕,发送方效劳器把邮件传到收件方效劳器,收件方效劳器再把邮件发到收件人的邮箱中.更进一步的解释涉及到以下几个概念:MUA--MailUserAgent,邮件用户代理,帮助用户读写邮件;MTA--MailTransportAgent,邮件传输代理,负责把邮件由一个效劳器传到另一个效劳器或邮件投递代理;MDA--MailDeliveryAgent,邮件投递代理,把邮件放到用户的邮箱里.整个邮件传输过程如下:目前使用的SMTP协议是存储转发协议,意味着它允许邮件通过一系列的效劳器发送到最终目的地.效劳器在一个队列中存储到达的邮件,等待发送到下一个目的地.下一个目的地可以是本地用户,或者是另一个邮件效劳器.如果下游的效劳器暂时不可用,MTA就暂时在队列中保存信件,并在以后尝试发送.关于邮件系统的其他一些技术,我们暂且不考虑.如下所示:邮件效劳器提供了邮件系统的根本结构,包括邮件传输、邮件分发、邮件存储等功能,以保证邮件能够发送到Internet网络中的任意地方.目前邮件效劳器有两种不同的应用群体:ISP提供商和企事业单位.Web邮件技术,使邮件用户可以在任何地方使用浏览器登录邮件效劳器收发邮件,而不用配置邮件客户端程序.多域邮件效劳是一台物理效劳器为多个独立注册Internet域名的企业或单位提供电子邮件的效劳,在逻辑上,这些企业和单位拥有自己独立的邮件效劳器〔企业邮局〕,也可以称为虚拟邮件效劳器技术.对于ISP提供商和企业集团公司来说,多域邮件效劳器的支持水平是选择邮件效劳器的一个重要考虑因素.它可以方便地扩展其横向邮件效劳水平.使用Linux作为邮件效劳器,可以与Sendmail、MySQL等开源软件共同使用,在满足用户需求的根底上降低了系统价格.邮件效劳器的平安防护,包括数据身份认证、传输加密、垃圾邮件过滤、邮件病毒过滤、平安审计等的多项平安技术.身份认证主要指SMTP发信认证,此项功能对于邮件效劳器是一个可选功能,主要目的是预防黑客利用自己的效劳器攻击其他邮件效劳器.完善SMTP身份认证不仅可以制止黑客的恶劣行为,同时可以保证自己的邮件效劳器的各种资源可以充分地应用到日常的邮件处理过程中,不会造成效劳器的系统崩溃和资源浪费.无论是POP3协议还是SMTP协议,由于其在设计之初的缺陷,全部使用明码进行消息的传递,因此很容易造成信息的泄漏.可以通过两种方式提升系统的平安性:链路加密和端对端加密.链路加密是使用加密工具(软硬件工具)对传输的线路进行数据加密,需要网络设施的支持.端对端加密是邮件客户端到邮件客户端的加密,是邮件效劳器应当提供的功能,目前较为流行的方式是使用SSL/TLS进行传输加密.垃圾邮件大多是一些带有商业性质的广告等宣传品.据估计,仅仅商业性垃圾邮件一项,每封垃圾邮件所抵消的生产力本钱就在1美元左右.单是下载垃圾邮件所花费的上网费与费,每年就要花掉全球网民94亿美元.此外,许多病毒以及身份证和信用卡盗用案例也与垃圾邮件有关.因此,需要邮件效劳器具有垃圾邮件处理的功能,抵御大局部垃圾邮件的攻击.黑客攻击和病毒本来是两个相对独立的技术体系,但是随着网络的不断开展,网络工具与病毒越来越趋于融合,比方尼姆达病毒既是病毒,也是网络攻击的一种方式,而应用广泛的电子邮件,也成了病毒传播的主要方式之一.目前,大多数邮件效劳器都具有了根本的病毒防护的水平.目前的邮件效劳器,仅中文就有假设干字符集,如GB-2312、Big5等等,虽然我们可以统一标准,但是,在实际的过程中,我们不可能统一所有的邮件客户端,因此我们只能要求邮件效劳器支持多语言的环境.由于目前许多邮件效劳器处于电信托管等方式(效劳器托管、效劳器租用),不可能经常进行本地操作,因此目前邮件效劳器均提供了远程邮件监控的功能.可以通过Web方式,监控邮件效劳器的工作状态,包括在线用户数、邮件处理数量和速度、存储空间使用率等,并且可以随时对出现的发信顶峰和网络攻击进行远程处理.电子邮件系统应该具备无限的扩展水平,Internet网络的一个特性是变化无常,需要应对随时而来的应用尖峰.因此,需要电子邮件系统具有无限的可扩展水平,这个水平主要体现在邮件的处理水平和邮件的存储水平上.为了能够使邮件的处理水平可以无限扩展,就需要引入集群和负载均衡技术,使应用平台可以在需要的时候无限扩充,满足长期或临时的业务需要.对于2000万以上的邮件用户来说,每天发送的邮件量至少在几千万封,为了便于邮件存储,需要高性能的邮件存储解决方案,最为理想的应该是SAN技术在邮件效劳器领域的应用.常见邮件协议:SMTP(SimpleMailTransferProtocol):SMTP主要负责底层的邮件系统如何将邮件从一台机器传至另外一台机器.POP(PostOfficeProtocol):目前的版本为POP3,POP3是把邮件从电子邮箱中传输到本地计算机的协议.IMAP(InternetMessageAccessProtocol):目前的版本为IMAP4,是POP3的一种替代协议,提供了邮件检索和邮件处理的新功能,这样用户可以完全不必下载邮件正文就可以看到邮件的标题摘要,从邮件客户端软件就可以对效劳器上的邮件和文件夹目录等进行操作.IMAP协议增强了电子邮件的灵活性,同时也减少了垃圾邮件对本地系统的直接危害,同时相对节省了用户观察电子邮件的时间.除此之外,IMAP协议可以记忆用户在脱机状态下对邮件的操作(例如移动邮件,删除邮件等)在下一次翻开网络连接的时候会自动执行.本系统主要从简单的邮件客户端来探讨一个邮件系统.利用JavaMail来实现.以下是关于JavaMail的一些根本知识:JavaMail,顾名思义,提供应开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.我们可以基于JavaMail开发出类似于MicrosoftOutlook的应用程序.虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(JavaDevelopmentKit),这就意味着你在使用前必须另外下载JavaMail文件.除此以外,你还需要有Sun的JavaBeansActivationFramework(JAF).JavaBeansActivationFramework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持.在Windows2000下使用需要指定这些文件的路径,在其它的操作系统上也类似.JavaMail是可选包,因此如果需要使用的话你需要首先从java.sun下载.目前最新版本是JavaMail1.4,使用JavaMail的时候需要JavabeanActivationFramework的支持,因此你也需要下载JAF.安装JavaMail只是需要把他们参加到CLASSPATH中去,如果你不想修改CLASSPATH的话,可以直接把他们的jar包直接copy到JAVA_HOME/lib/ext下.这样JavaMail就安装好了.JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder等.Session定义了——个根本的邮件会话,它需要从Properties中读取类似于邮件效劳器,用户名和密码等信息.Javax.mail.Session:Session类定义了一个根本邮件会话(session),是JavaMailAPI最高层入口类.所有其它类都是经由这个session才得以生效.Session对象用Java.util.Properties对象获取信息,如邮件效劳器、用户名、密码及整个应用程序中共享的其它信息.Javax.mail.Message:一旦获得Session对象,就可以继续创立要发送的消息.这由Message类来完成.由于Message是个抽象类,必需用一个子类,多数情况下为Jernet.MimeMessage.MimeMessage是个能理解MIME类型和头的电子邮件消息,正如不同RFC中所定义的.虽然在某些头部域非ASCII字符也能被译码,但Message头只能被限制为用US-ASCII字符.Javax.mail.Address:一旦您创立了Session和Message,并将内容填入消息后,就可以用Address确定信件地址了.和Message一样,Address也是个抽象类.您用的是Jernet.InternetAddress类.Javax.mail.Authenticator:与J类一样,JavaMailAPI也可以利用Authenticator通过用户名和密码访问受保护的资源.对于JavaMailAPI来说,这些资源就是邮件效劳器.JavaMailAuthenticator在Javax.mail包中,而且它和J中同名的类Authenticator不同.两者并不共享同一个Authenticator,由于JavaMailAPI用于Java1.1,它没有J类别.要使用Authenticator,先创立一个抽象类的子类,并从getPasswordAuthentication()方法中返回PasswordAuthentication实例.创立完成后,您必需向session注册Authenticator.然后,在需要认证的时候,就会通知Authenticator.您可以弹出窗口,也可以从配置文件中〔虽然没有加密是不平安的〕读取用户名和密码,将它们作为PasswordAuthentication对象返回给调用程序.Javax.mail.Transport:消息发送的最后一局部是使用Transport类.这个类用协议指定的语言发送消息〔通常是SMTP〕.它是抽象类,它的工作方式与Session有些类似.仅调用静态send〔〕方法,就能使用类的缺省版本:Transport.send〔message〕;或者,读者也可以从针对自己的协议的会话中获得一个特定的实例,传递用户名和密码〔如果不必要就不传〕,发送消息,然后关闭连接.Javax.mail.Store:Store类实现特定邮件协议上的读、写、监视、查找等操作.通过Javax.mail.Store类可以访问Javax.mail.Folder类.Javax.mail.Folder:Folder类用于分级组织邮件,并提供照Javax.mail.Message格式访问email的水平.具体用法大家可以查看JavaMailAPI.简单例如:packagefss.base;importjava.util.*;importjavax.mail.*;ernet.*;importjava.util.Date;importjavax.activation.*;importjava.io.*;publicclassMail{//把本程序所用变量进行定义.具体在main中对它们赋植.privateMimeMessagemimeMsg;//MIME邮件对象privateSessionsession;//邮件会话对象privatePropertiesprops;//系统属性privatebooleanneedAuth=false;//smtp是否需要认证privateStringusername="";//smtp认证用户名和密码privateStringpassword="";privateMultipartmp;//Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成//MimeMessage对象publicMail(Stringsmtp){setSmtpHost(smtp);createMimeMessage();)publicvoidsetSmtpHost(StringhostName){System.out.println("设置系统属性:mail.smtp.host="+hostName);if(props==null)props=System.getProperties();//获得系统属性对象props.put("mail.smtp.host",hostName);//设置SMTP主机)publicbooleancreateMimeMessage(){try{System.out.println("准备获取邮件会话对象!");session=Session.getDefaultInstance(props,null);//获得邮件会话对象)catch(Exceptione){System.err.println("获取邮件会话对象时发生错误!"+e);returnfalse;)System.out.println("准备创立MIME邮件对象!");try{mimeMsg=newMimeMessage(session);//创立MIME邮件对象mp=newMimeMultipart();//mp——个multipart对象//Multipartisacontainerthatholdsmultiplebodyparts.returntrue;)catch(Exceptione){System.err.println("创立MIME邮件对象失败!"+e);returnfalse;))publicvoidsetNeedAuth(booleanneed){System.out.println("设置smtp身份认证:mail.smtp.auth="+need);if(props==null)props=System.getProperties();if(need){props.put("mail.smtp.auth","true");}else{props.put("mail.smtp.auth","false");}}publicvoidsetNamePass(Stringname,Stringpass){System.out.println("程序得到用户名与密码");
username=name;password=pass;)publicbooleansetSubject(StringmailSubject){System.out.println("设置邮件主题!");try{mimeMsg.setSubject(mailSubject);returntrue;)catch(Exceptione){System.err.println("设置邮件主题发生错误!");returnfalse;))publicbooleansetBody(StringmailBody){try{System.out.println("设置邮件体格式");content=text/html;BodyPartbp=newMimeBodyPartcontent=text/html;"<meta-equiv=Content-Typecharset=gb2312>"+mailBody,"text/html;charset=GB2312");mp.addBodyPart(bp);returntrue;)catch(Exceptione){System.err.println("设置邮件正文时发生错误!"+e);returnfalse;))publicbooleanaddFileAffix(Stringfilename){System.out.println("增加邮件附件:"+filename);try{BodyPartbp=newMimeBodyPart();FileDataSourcefileds=newFileDataSource(filename);bp.setDataHandler(newDataHandler(fileds));bp.setFileName(fileds.getName());mp.addBodyPart(bp);returntrue;)catch(Exceptione){System.err.println("增加邮件附件:"+filename+"发生错误!"+e);returnfalse;))publicbooleansetFrom(Stringfrom){System.out.println("设置发信人!");try{mimeMsg.setFrom(newInternetAddress(from));〃设置发信人returntrue;)catch(Exceptione){returnfalse;))publicbooleansetTo(Stringto){System.out.println("设置收信人");if(to==null)returnfalse;try{mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));returntrue;)catch(Exceptione){returnfalse;))publicbooleansetCopyTo(Stringcopyto){System.out.println("发送附件到");if(copyto==null)returnfalse;try{mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[])InternetAddress.parse(copyto));returntrue;)catch(Exceptione)(returnfalse;))publicbooleansendout()(try(mimeMsg.setContent(mp);mimeMsg.saveChanges();System.out.println("正在发送邮件....");SessionmailSession=Session.getInstance(props,null);Transporttransport=mailSession.getTransport("smtp");〃???transport.connect((String)props.get("mail.smtp.host"),username,password);transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));//transport.send(mimeMsg);System.out.println("发送邮件成功!");transport.close();returntrue;)catch(Exceptione)(System.err.println("邮件发送失败!"+e);returnfalse;))publicstaticvoidmain(String[]args)(Stringmailbody="HYPERLINK://laabc用户邮件注册测试<fontcolor=red>欢送光临</font><ahref=\"HYPERLINK://laabc\">啦ABC</a>";Mailthemail=newMail("smtp.126");themail.setNeedAuth(true);if(themail.setSubject("laabc邮件测试")==false)<areturn<a〃邮件内容支持html如<fontcolor=red>欢送光临</font>href=\"HYPERLINK://laabc\">啦ABC</a>if(themail.setBody(mailbody)==false)return;//收件人邮箱if(themail.setTo("shengshuai@126")==false)return;//发件人邮箱if(themail.setFrom("shengshuai@126")==false)return;//设置附件//if(themail.addFileAffix("#######")==false)//return;//附件在本地机子上的绝对路径themail.setNamePass("用户名","密码");〃用户名与密码if(themail.sendout()==false)return;}}一.需求分析电子邮件作为Internet最为广泛的应用之一,在人们的工作和生活中扮演着重要的角色,应用的普及使电子邮件技术有了飞速的开展.不仅在普通人的日常生活中,而且,已经成为现代企业内外信息交流的必备工具,据统计Internet上有30%的业务是与电子邮件有关的.企业拥有自己的邮件系统,不仅能够提升企业形象,而且更重要的是能为企业带来实际效益.当然作为一个邮件系统要考虑多方面,比方稳定性、平安性等其他一些因素,但由于某些原因,在此只实现最根本白客户端功能.Java为实现这种功能提供了丰富的类库,借此,在老师的指导下,我们开始了网络邮件系统的开发.邮件客户端让用户可以方便地治理邮件效劳器上自己的邮件,方便地发送邮件.要到达这个目的,要把用户的相关个人信息数据,相关的邮件效劳器信息〔收发邮件的效劳器的域名、拥护登陆邮件效劳器的帐号等〕保存到邮件客户端所在的效劳器上的文件或者数据库里.为了提升客户端的响应速度,需要把用户的邮件保存下来,这样以后就不用每次都连接到邮件效劳器上去获取邮件了.通过上面的分析,邮件客户端的主要功能需求分析描述如下:.注册新用户由于是一个支持多用户的应用,在使用的时候需要有一个登陆的过程,而在应用刚开始提供应使用者使用的时候,不应该规定使用者将以什么样的帐号登陆,所以需要在登陆界面上提供一个给使用者自己注册新用户的功能,这样可以创立应用的用户,保存用户的信息,为登陆做好准备..用户登陆用户登陆后,进入邮件客户端的主界面,如果用户设置了默认邮件效劳器,那么列出用户默认邮件效劳器上收件箱的所有邮件,在该列表上用户可以选择只显示已读邮件或者未读邮件,或者删除邮件..新增邮件效劳器用户第一次使用客户端的时候,至少要添加一个邮件效劳器来收发邮件.邮件效劳器的信息包括:效劳器名称、登陆帐号〔用户名和密码〕、pop3〔收邮件〕效劳器域名、smtp〔发邮件〕效劳器域名、是否在该效劳器上保存接受过的邮件.提供一个效劳器列表,在列表上可以修改、删除效劳器信息..修改个人信息提供一个修改用户个人信息的界面.个人信息有:用户ID〔登陆邮件客户端的用户名〕、密码、真实姓名、默认邮件效劳器..接收邮件用户登陆的时候自动从默认邮件效劳器上收取新邮件,之后再在指定的间隔时间后自动接收新邮件,同时提供一个按扭,用于用户手动接收邮件..发送邮件提供一个邮件发送界面,在该界面上可以让用户输入邮件发送、抄送、密送地址,如果有多个,多个地址间用英文分号隔开,可以编辑上传附件个数,可以让用户把邮件保存为草稿,也可以直接发送邮件..数据修改实时生效一局部用户数据将保存在客户端的会话里,当用户通过界面修改这局部数据时,要刷新会话里保存的相应数据..同时支持IE和Firefox能在MicrosoftInternetExplorer正常显示和使用的网页,不一定能在Firefox上正常显示和使用,这是在制作网页的时候需要注意的..系统设计从模拟用户的角度进行分析,对于一个邮件的客户端,首先要确定其功能是什么,也就是用户想要系统做什么工作.有以上需求分析可确定需要建立的模块有:用户注册、用户登录、用户治理、邮件效劳器信息治理、邮件治理等.由此分析如下模块图:WEB邮件客户端根据以上分析描述,根本确定了邮件客户段应该要包括的模块,下面详细地来分析每一个模块所要实现的功能..用户注册模块该模块通过点击登录界面的“注册新用户〞按钮进入,在用户注册界面,要求用户输入:.登录ID,及登录用户名,必填,在邮件客户端中,该ID是唯一的.登录密码,必填,长度为1—8位.显示名,即阿松邮件时,接收人将看到的名字,一般是真实姓名,长度为1—255个字节.用户登录模块该模块的界面就是登录界面了,该模块是已注册用户进入邮件客户端的唯一入口.在这里要求用户输入登录ID和密码,输入完成后直接按回车键或点击“登录“按钮来提交登录信息.对提交来的用户名进行校验,如果校验不通过,那么弹出对话框提示用户输入的用户名或者密码有误;如果校验通过,那么在会话中保存用户的登录ID,进入邮件客户端的主界面,并在主界面上提供退出系统的入口..用户治理模块用户治理模块提供应用户修改个人信息的功能,可修改的个人信息有:登录密码、显示名和默认邮件效劳器.修改这些信息后,需要更新会话中保存的数据,让修改实时生效..邮件效劳器信息治理该模块提供一个当前用户已有的邮件效劳器列表,让用户添加、修改、删除邮件服务器信息,实现接收多个效劳器上邮件的功能.添加邮件效劳器时,需要用户输入:.效劳器名,必填,用户给该效劳器起的名称,以便于识别,最大航渡为32字节.登录效劳器的用户名,必填,最大长度为255字节.登录效劳器的密码,必填,最大长度为255字节
.pop3效劳器域名,必填,最大长度为255字节.smtp效劳器域名,必填,最大长度为255字节.是否在邮件效劳器保存邮件备份,即是否在邮件效劳器上删除已经接收下来的邮件,默认为否上述信息都可以修改,修改后需要更新会话中保存的数据,让修改实时生效.5.邮件治理模块该模块主要包括以下几个功能:.提供撰写并发送邮件的邮件编辑页面,在改界面上,用户需要填写收件人的邮件地址、邮件主题及内容,可以填写要抄送或者密送的邮件地址,也可以上传一个或者多个邮件附件,可以进行发送邮件或者保存邮件为草稿的操作,可以在发送邮件的同时把邮件保存为已发送邮件..提供一个收件箱列表,该列表以粗体字体显示未读邮件,可以让用户选择只列出所有邮件、未读邮件或者已读邮件.在该列表上用户可以选择多个邮件,可以进行删除多个邮件的操作,在列表上对于每个邮件提供查看邮件详细内容的连接..提供查看邮件详细内容的界面,在该界面上显示邮件的发件人、主题、邮件的正文及附件文件名、文件大小并提供下载连接.在该界面上用户可以进行删除邮件,写回复邮件或者返回收件箱邮件列表的操作.4.提供一个草4.提供一个草稿邮件列表,在该列表上用户可以选择多个邮件,格邮件提供进入邮件编辑界面.UML设计〔软件工程流程〕Uml设计根本遵循课堂上老师所讲各图规格,由于篇幅所多包含.1.用例总图u删除邮件效劳器信息〜登录!一、一!一人二大匚已注册用户C修改个人信息〕〔增加邮件效劳器信息同时删除多个邮件,对于米致,局部图样显示不理想,请〕改效劳器信息二^〕—送邮彳4^^〕一二收取邮件[注册新注册新用户OX未注册使用者2.用例描述用例名称:邮件系统注册用例表识号:1参与者:用户简要说明:用户填写自己的根本注册信息,提交注册成功返回给用户自己已填写的信息.前置条件:用户用浏览器进入本系统,并且是未注册用户.根本领件流:.用户进入本系统点击“用户注册〞.显示出一个文本框用户填写自己的邮箱地址.确定后点击“注册〞.注册成功后返回给用户自己的邮箱地址.用例终止其他事件流A1:在按“注册〞按钮之前,用户随时可以按“返回〞按钮,文本框的内容不保存.返回主页异常事件流:.注册未成功返回错误信息,用户确认..返回到本系统主页.后置条件:用户的信息被保存到系统数据库.注释:无用例名称:修改个人信息用例标识号:2参与者:用户简要说明:用户点击“用户治理〞可以修改自己的信息,点确定后重新写入数据库信息前置条件:用户已登录本邮件治理系统根本领件流:.用户登录后点击用户治理..根据用户的需求填写自己要修改的信息内容..修改确认后点击保存..返回给用户修改后的信息..用例终止.其他事件流A1:在按“保存〞按钮之前,用户随时可以按“返回〞按钮,文本框的内容不保存.返回用户的邮箱首页异常事件流:.用户输入的修改信息不合法,系统提示其错误..返回用户邮箱首页后置条件:用户新信息被保存到数据库.注释:无
用例名称:登陆用例标识号:3参与者:用户简要说明:用户登陆到他的邮箱前置条件:用户已注册根本领件流:1、用户注册之后,可点击“登陆〞进入登陆页面2、用户输入登陆ID,密码3、点击登陆按钮,进入自己的邮箱4、用例终止其他事件流:1、用户可在此界囿,进行注册2、用户取消登陆异常事件流:1、提示输入错误,用户确认2、返回到登陆页面后置条件:用户输入信息正确,进入自己的邮箱注释:无用例名称:发送邮件用例标识号:4参与者:用户简要说明:用户发送邮件给收件人前置条件:用户已登录根本领件流:1、单击“写信〞按钮2、进入发送邮件页面3、用户在文本框内编辑收件人,主题,内容信息4、点击“发送〞按钮,发送邮件5、用例终止其他事件流:1、可以任意添加或删除附件2、假设发送的邮件占用空间太大,那么添加不上3、收件人文本框里必须填写正确的邮箱地址异常事件流:1、提示错误信息,用户确认2、返回到发送邮件页面后置条件:xx给xx的邮件发送成功再与一封注释:无
用例名称:接收邮件用例标识号:5参与者:用户简要说明:用户收取邮件,并查看邮件信息前置条件:用户登录根本领件流:1、点击“收信〞按钮2、进入查看邮件贝囿3、点击某行发送的邮件主题,那么跳转到显示邮内容页面件4、阅读邮件内容5、返回6、用例终止其他事件流:假设邮件发送的是附件,翻开或卜载压缩包到效劳器是异常事件流:1、提示错误信息,用户确认2、返回到发送邮件页面后置条件:无注释:无用例名称:删除邮件用例标识号:6参与者:用户简要说明:用户对不想要的邮件进行删除前置条件:用户已登录根本领件流:1、页面上有删除按钮2、点击你想删除的那行邮件主题然后点击删除3、会出现一个"你确定删除吗〞4、假设点击确定会删除此邮件5、用例终止其他事件流:假设点击否那么不能进行删除异常事件流:1、提示错误信息,用户确认2、返回到发送邮件页面后置条件:无注释:无
用例名称:查看邮件列表用例标识号:7参与者:用户简要说明:用户查看自己有多少,那些邮件前置条件:用户已登录根本领件流:1、单击〞查看邮件〞2、进入到邮件列表贝囿3、所有的邮件以列表的形式列出来4、用例终止其他事件流:假设邮件过多会分页显示异常事件流:1、提示错误信息,用户确认2、返回到发送邮件页面后置条件:无注释:无用例名称:增加邮件效劳器信息用例标识号:8参与者:用户简要说明:用于设置收发邮件的效劳器前置条件:用户已登陆根本领件流:1、用户单击“添加邮件效劳器〞,进入添加页面2、用户输入效劳器名称、登录名、密码、pop3域名、smtp域名、是否保存邮件备份等信息.3、用户确认无误后,点击“添加“按钮4、用例终止其他事件流:用户退出此贝囿异常事件流:对效劳器域名检验的提示对一些未填项的提示后置条件:无注释:无
用例名称:删除邮件效劳器信息用例标识号:9参与者:用户简要说明:如果某些效劳器信息已无用,用户可以对起删除前置条件:用户已登录根本领件流:1、用户单击“删除效劳器信息“,进入删除页面2、用户在效劳器信息列表里选择要删除的效劳器,并点击“删除“按钮3、用户点击提示中的“确认“按钮4、用例终止其他事件流:用户退出此也面异常事件流:删除效劳器信息失败后置条件:无注释:无用例名称:修改邮件效劳器信息用例标识号:10参与者:用户简要说明:用户可以修改已添加的效劳器信息前置条件:用户已登录根本领件流:1、用户单击“添加效劳器信息“,进入添加页面2、用户输入需要修改的信息3、用户点击提示中的“保存"按钮4、用例终止其他事件流:用户退出此贝囿异常事件流:对一些未填项的提示后置条件:无注释:无.序列图〔由于软件运用的不成熟,有些图可能不是很完善,请见谅〕
注册模块用尸注册页面包含用户的[已吁々K限制类负责检验Use«B用月d,姓名密码用户的宓码是否通过外键与用户系统登录页面再输入密码A法〞注册失败其它数据库关联<<actor>>
user<<boundary>>
?Login<<boundary>>
Register<<control>><<boundary>><<entity>>UserManagerErrorUser1:access()i——;用户通过i浏览器:进入系统2:skip()狗户点击3:sendMessage()川户邮箱注理把届;甘判断是否已必被注册调用UserManager的userExist()方法写人数据库4:userExist()断用户是否已存在一彳use数据库包含字段:\idvachar32premarydisplay_namevachar255passwordvachar8default_domaincachar32以上而有数据通过外键与其他数据库关联1J5:insert()当用户进入是系2随机报essiorf入用户的浏览器「1、心、返回川户的注册信息i.nu.重定向到登录页面7:success()6:fail()i
注册次败一这里是用户注册所须的数据包含:StringidStringnameStringpasswordStringpasswordl当点击提交是执行两次密码是否相同的判断if(!password.equals(passwordl)访法当不一致是要登录模块工具类用户登录页面包含:userName用户名password密码用于一些辅助操作,如:连接数据库、获得管理器等操作.限制用户登录用户信息表包括:userNam翻户名password密码showNam配示名用户邮箱主页面错误页面(登录失败)<<actor>>
user<<boundary>>
Login<<control>>
Tool<<control>>UserManage<<entity>>
User<<boundary>>
Index<<boundary>>
Error1:browse();——-,k用户访问
J2:submitLogin()
用户提交登丁L3:loginUser()用户已注册用户进入个登录页面用户确认登录国参数:无返回值:无用户登录:4:isLogined()
由用户是否登录修改个人信息模块用户是否登录参数:4ServletRequestrequest用户请求返回值:boolean用户登录参数:।ServletRequestrequest用户请求userId登录IDpasswor普录密码返回值:int:checkPassword()检验用户密码6:success()登录成功检验密码参数:userId登录IDpassword登录密码返回值:booleanJO(参数:无返回值:无7:error()登条失败!ZI失败L\参数:无i返回值:backNews:错误信息用户修改信息页面包含了修改:姓名,效劳器,原密码,密码,修改信息再输入密码限制类修改成功User数据库用于保返回页面失败返回页面存用户的注册信息<<actor>>user<<boundary>>ModifyUserInfo<<control>>UserManager<<boundary>>Login<<boundary>>Error<<entity>>User1:modify()淖击左侧:修改个人信息-T—里击保存2:Domain()用户已登陆客户端含有用户session用户填入要修改的信息包含姓名,效劳器,原密码,密码,再输入密码邮件效劳器治理模块3:modifyUser()调用modifyUser()方法修改信息二数据库执行update成功••user数据库包含字段:idvachar32premarydisplay_namevachar255passwordvachar8default_domaincachar32以上环者数据通过外键与其他数据库关联4:updateSuccess()5:fail()保存未成功填写无效或者数据N没有在数据库更新成功当用户单击保存按纽首先根据用户的请求对象request取得用户治理类UserManager对象,通过该对象和Domain对象,然后取得用户的输入参数,并检查两次输入是否相同,并调用modifyUser()方法修改用户信息用户在此页面内加月在此页面内输入效劳器相关信息要修改的效劳器信息信息包括nem效劳器名包括nem效劳器名login_nam录用]!gin_nam录用户名login_passW0d密腌in_passwod密码pop3_serverMpop3_serverW3smtp-ServerWipsmtp_server^keep_copykeep_copy限制添加、用户用户邮箱主柘即呆留邮件备施否彳呆留邮件备修改、删除效劳器信息表包括:nem效劳器名login_name^用户名login_passW6rd密码pop3_server;pfep3smtp_server:fsmipkeep_copy是否物留邮件备份操作失败页面<<boundary>><<boundaryAddServerSettinModifyServerS><<control>>;ettmgmainManagerDomai<<entity>><<boundaError>>1:arrive()用户到达主页2BaddRequest(发送添加清求用户Qi返回值:光登录卜:用户进关主页面参数:无发送请求参数:无返回值:提交添项;参数:无:返回值:无:3:submitAdd()添加血务器信息添加到数据施参数domain返回值rue/false邮件治理之发送邮件模块提交修段参数:无i返回值:4:addDomain()二~-lri_6:modifyOrDeleteRequest()发送候改或删除请丁|7:submitMpi瞥)发送修改或删除请求发送请求参数:无返回值:添加5:error()错误.i।修改信息|参数domain」修改9:efro%10:submitDelete()错误删除效劳客,言息dHeteDomain()修改效劳器信息modifyDomain()12:error()丫删除1r!iL;L『删除信息b瓜参数domainj返回值rue/fals0•iiii错误—r-操作失败匕参数:无返回俺ackNews错误信息用户编辑邮件页面工具类数据庠man其信息可参考邮件治理器数据库设计组成邮件的容器成功页面<<caseWorker>>
user<<boundary>>
compose_mail<<control>>
Tool<<control>>MailManager<<entity>>
Maill<<control>>ComposeMailServle<<boundary>>
successForm1:arrive()2:submitSent()进行发愈点击写信转到编辑页参数:无返回值:无廿3:getMailManager()4JnitConnetionPool()用户
登录连接数据库参数:ServletConfiservletConfig返回值:无获彳#用把参数:ServletReques|reques用户请求返回值String发送邮件匕参数:maill曲B件DMessagemessage要发送的消息返回值:无邮件治理之接收邮件模块获得邮件治理器—\参数ServletRequestrequest户请求返回值MailManager用户治理器获得附件参数:maill邮件DfileNamlW■件名字处理请求参数:ServletRequestrequest用户请求ServletResponserespons系统响应返回值:无5:getUserId()—返回值isInpuStreaetAttachment8:sa保存邮件渗数Messagmessage要发送的消息二maill曲B件D返回值:无9:sendMail()发送成功参数:无返回值:10:sucess()
doGet()下载附件列出邮件信息福困碰信息:接收信息页藤收信息列表:信息:us屯arc邮件所制户传自句括.传自句括.MamaicontsortgChardomaivarcharMsagelmSasage;刷声发送邮件信息嘛时容邮件所属邮件效劳器MessageMess其信息可参考Message:msg^htmi是否attachmettar、用户邮件信息附娜件信息附群据库设彻能实现限制摸收信息歹解邮件信息邮娥邮件邮件附件原文件名歹器附件用户‘^boundaryxvcorrtrolndexMaeceir<<contsol
Tool‘^boundaryxvcorrtrolndexMaeceir<<contsol
Tool<<contsolMfeMsePars1:sU()mi点散偎前返回值:无登录进入收信;参数:无<<caseWorluser2:recMai连接数魄库3niCononetOOI邮件治理之删除邮件<<contsol
eMaanager<<bounqary><<boundary:mladetlaiismai>><<contsolattachmeDowadAttachemtentServI发件信息获取功能值参数MeMsgParseTlimmp^Message:msgMessagee邮件以列表的形黄列M参数iMamait送邮件信息的参数邮件信息附件返回值:无ssage:msg发送邮件信息的附作返回值:无;1/限制收至岫邮件4:saV2DBa)参数:无1返回值:无1/6:saVeMai7:openMai—:10:geyReP)当点击某行邮件主的内容信息,翻开参数:时,邮刊Mam爱送邮件信息的参数Message:逾哪件信息的附件返回:无ervl:DoadAttachmentS,从嗣tchment里下载附件9:getAttachment()下载判断邮件是杏需要回执参数:无返回版e接收信息页面接收信息列出邮件信息在本页面信息包括:信息包括:数据摩mat列表:MessagemsgMesMageagemsgMes翼倦息可参考Mail:mai送邮件信息的参数用户发送邮件信息附做送邮件信息附件数据库设计功能实现限制类接收信息列表Message:育趣邮件信息的日<<caseWorker>>user(r>><<boundary>>
index<<control>>MailReceiverTool<<control>>MimeMseParser<<control>>MailManager<<boundary>>
listmail件接收信息「息包括:数接收信息「息包括:数热mii牛名列_<<caseWorkerboundauser「irdex^yxcontrolCompSesfeM<<<controiMOicer<<controlToo1J<<controMfeMsePcattchrrsernenctontrd<<boundary=<boundary>ouiMMinage'is_rmiaiR_drafts_se都件信息戴糊箱写件箱接功能实现捶眦河收信,陵/小ssageMessage:呻总^^^|^于件心送邮件用n附发送邮件信J用户按必自行商送邮件信息接收信息页5关仔自.「一白心H4日大I□,口、・信息包括:〃attacMessage:m收件箱列出邮件信息在本页面列表:Mam缴送邮件保存附件到信息的参数AttachmentsMessage:msg1:sUbmi限制收到的邮件参数:为返回值:江连接斗据库:获取功能值i邮件以列表的法式列出MfeMsgPa随T^mmpMaii缴送邮件信息的参数2:reM)ai点'版儡钊进入收信参数:无返回值:3血o4:Sa2DBMai:—fh15:sa2DBMai-kMessage:msg邮件信息附件返回值:无_I_tpop3p.发件信息aiMessMessage:ms;发送邮件信息的附件■:/]MessageiW#驻stg:m邮件iD息返回值:无发送成功;返回值:无8:8:protpBSSMqUest()11:keepDraft()邢:BodyPartItem(月j10/s.ndMai12:pr(AttasSMflieints()••••「把发送入;保存到草稿箱悔数:无保存信息到草需箱!13:sendMai-n*r返回值:无参数:调MMinMap:parameters勺方法及attachments返回值:无保存发退的邮件到草稿箱Message:msg发送邮件信息附件.类图由于篇幅所致,一下以此是相应的类图.但还是有一些图效果不佳.敬请原谅.注册模块登录模块修改用户信息模块邮件效劳器治理模块邮件治理之发送邮件模块邮件治理之接收邮件模块邮件治理之删除邮件模块邮件治理之邮件列表模块<<boundary>>
Register注册页面+id:Strin强录D+username:StrW户名+password:Strin登录密码+password1:String!认密码<<entity>>User用户表-id:Strin/|户登录名-password:String录密码-displayName:String录用户的真实姓名-defaultDomain:String<<boundary>>
Error错误页面+getId():Strin较得用HD+setId(userId:String):vod置用HD-userId:Strin登录DLogin登录页面+backNews:String误信息-password:String!录窗<<boundary>><<control>>Tool工具类-user:User<<control>>UserManager用户限制器-log:Log+DB_NAME:String=jsp-mail-DOMAIN_MANAGER_KEY:String=domain-manager-session-key-USER_MANAGER_KEY:String=user-manager-session-key-MAIL_MANAGER_KEY:String=mail-manager-session-key-USER_KEY:String=longined-user-id-session-key+MAIL_ATTACHMENT_LOCATION:String=null-es:String==?gb2312?B?-ee:String=?=+UserManager(userId:String)+getUser():User+setDisplayName(displayName:String)+setPassword(password:String)+setDefaultDomain(defaultDomain:String)+modifyUser():boolean+modifyUser(user:User):boolean+checkPassword(userId:String,password:String):boo+userExist(id:String):boolean+addUser(user:User):boolean+deleteUser(userId:String):boolean+getUser(userId:String):Userean+initApp(servletConfig:ServletConfig)+destroyApp(servletConfig:ServletConfig)+initConnetionPool(servletConfig:ServletConfig)+getSqlCmd():SqlCmd+getUserId(request:ServletRequest):String+isLogined(request:ServletRequest):boolean+loginUser(request:ServletRequest,userId:String,password:Str+logoutUser(request:ServletRequest)+getUserManager(request:ServletRequest):UserManager+getDomainManager(request:ServletRequest):DomainManager+getMailManager(request:ServletRequest):MailManager+getMailSenderName(mailSender:String):String+getMailTextContent(mailContent:String):String+getMailHtmlContent(mailContent:String):String+isPostBack(request:ServletRequest):boolean+encode(s:String):String+decode(s:String):String+toDspText(fileName:String,length:long,description:String):String+getFileName(dspText:String):String<<ey>i>Usffi户表<<co>rtrolToot具类<<boundary>>Login录页4g:Log+DB_NAMjp-mai-DOMAIN_MANAGEmain巨醺融删si-userIdtjISD-dsg用户登录名-passwqrd::St密码-dpyNamglSSi用户的真实如-passwogS:理密石马defDolmangi-USER_MANAGEE^KEYnnSeyr-sessi-MAIL_MANAg3ER_KnaYeiSkessi-USERjiKEYeStcdseaiskey+MAIL_ATTACHM§NT_LOCATION:Stri-es:nS第二gb2312?B?-ee:rStri?=+getId(g赛得ID户+setId(usg):dVoitSlfi+tnApp(eCogi8eh©o)fi+destroyAppgseeb®tgfi+rcon:(letoottCon|se©tg^fi+get®qll()(CSql+getUserId(requeequHiigpSSitvil+Lo§d(request=tHepSsarJbool<<co>ftrolUserMa酯ge限制器-user:User+(grJser(reque摭eq|UnSe^vgseraCssSr()rCi:Stri+ogoutUser(reqUestqUetptServl+getUserManager(ree|qiees:tHUpseeManager+getDMmaager(requeseqHesMeDomar+getMaager(requeRequeseMar+getM^aCerNI8meeTJaStgtri+getMbaiContenrt(mngStgtri+getMCinterC(intBinrig)Stgtri+PostBack(recesRet|ueeSbool+encodeOs:Sttri+decodie05:Sttri+toDspNac堆gengtEg,dpiscStr:Sjtri+geName(ds|3gl)eigtrBtri+UserManagngi)(userId:Stri+getUser():User+sesfyNarapyNiamg)Stri+setPasswordnpassword:Stri+setDD(aUCefDomsnr)+mydliserearbool+mydliser(user:eUEer):bool+checkPasswrgrcPuseWo]rC^efiOri+userEXng):kboo+addUser(useanUser):bool+cfeiUser(us!e):Ideootri+getUser(us)elUtseStri<<bounIndeXdary>>由于空印其g(etter/s(方法就不:可以通过:自动生成,可UML反向工程<<boundary>>Errot误页面+backNngws误僭息<<etyt>>Us的户表-dStg用户登录名-passwotgl^Sft密码-dp期Nameg登录用户的真实姓-defflDomWng+getId(nSM导ID户+setId(userjd::Sft置ID户夕vvconfrolToot具类-og:Log+DB_NA般jspr-mai-DOMAIN_MANAG=R_m(ainsSteO■Hkesi幺USER_MANAGER_KEYnanaigfeEysessi%AIL_MANAGgR_K(anaSenslessi-USER_KEYnged-usfeseosikey+MAIL_ATTACHMENT_LOCATION:Stri-es:St==?gb2312?B?-ee:St=?=<<cor>>olUserManag府限制器-user:User<<ety>>Dom拥施邮件+UserManagerngi)serId:Stri+getUser():User+sesDyNampOdNamegStri+setPassword(password:Stri+setDeD0m(aefauomajtg)+mdyUser()eanDol+mdyUser(user:Ueaer):bool+checkPasswori:g(u|9esswogri:Sooi+usesi(dkBtig):booi+addUser(user:elUser):bool+d住eUser(useg|d:bDDn+getUser(useW(dJSerijom-dSngi-namengStri-tgiNamergStri-tgriPasswong:St-pop3Server:St-smtpServer:Sti-mlAddressigStri-keepCopyinboo-userldngStriri<<boundary>Err舞误页画+backNe喊§S&(方法就不写了+getId()ngStri+setd(Sngi)可以通过自动生成可UMlL方向工程+1tApp(s^ColglfSeeCDg|fi+destroyAptCoglf®e^lCDg)fi+HConoePi侬leCogfSeeCDg|fi+getCqd()CSiqll上getUserId(requeiRequp!SeinStri^s_Dneid(request:HReSeesltarlDool+DgnJser(requestelRepSesi|us§「l|daSswogd+DgoutUser(requeS!Req|tpl3Servl+getDOM1laiager(requeSReqtplSe)nM)0tmaJier+getlMaiager(requesfiFHbtpueeMNrMigier+getMaiiderNalSBn(]lBang)trSgri+getlTa:tConteCD1Tmaittg)t画ri+getM0C)ntentCm^enttg)t画ri+sDostBack(requesfelReqiupjStanttool+encodens):轴1+decodens):轴1+toDspTNa:(lfiergSh■gthng,detonriSg):SJri+geeNiame(dspTeXSStri<<boundary>>ModifyUseinO用户彳+usernanrgfefe&i+defaUOrm@l明i认服=+OPasswond扇if码+passwondJS®码+passwordj确甑密码息页面・器trer<<boundary>>Modif<<boundary>>ModifyServerSetting此类是修改或删除、效劳器信息的页面包括的都是相关效劳器的信息<<entity>>Domain邮件效劳器-id:String-name:String-loginName:String-loginPassword:String-pop3Server:String-smtpServer:String-mailAddress:String-keepCopy:boolean-userId:String+getId():String+setId(id:String)修改/删除页面<<boundary>>Index主页此类是添加效劳器、信息的页面包括的都是相关效劳器的信息<<boundary>>AddServerSetting添力口页面<<boundary>>
Error错误页面+backNews:String错误信息此类还包括loginName,loginPasswordpop3Server,smtpServerkeepCopy的set方法,在此就不写了<<control>>DomainManager效劳器限制器#userId:String#domain:Domain邮件效劳器+DomainManager(userId:String,domainId:String)+getUserId():String+getDomain():String+addDomain(domain:Domain):boolean+modifyDomain():boolean+deleteDomain():boolean+modifyDomain(domain:Domain):boolean+deleteDomain(domainId:String):boolean+addDomain(userId:String,domain:Domain):boolean+deleteDomain(userId:String,domain:String):boolean+getDomains():Domain[]+getDomain(domainId:String):Domain+getDomains(userId:String):Domain[]+setName(name:String)<<control>>Tool<<boundary>>listsend+initApp():void()(ServletConfigservletConfig)+destroyApp():void(ServletConfigservletConfig)-initConnetionPool():void(ServletConfigservletConfig)-log:bog-DB_NAME:String-DOMAIN_MANAGER_KEY:String-USER_MANAGER_KEY:String-MAIL_MANAGER_KEY:String-USER_KEY:String-MAIL_ATTACHMENT_LOCATION:String<<control>>MailManager#user:User#domain:Domain+MailManager()+getDomain():Dom+getUser():User+saveMail():int(Mailmainail,Messagemsg,booleanisReceive)+saveMail():int(Messagem+msgExists():boolean(Stringm+mailExists():boolean(Stringm+getMail():Mail(Stringm#listMail():Mail[](inttype)+listInboxMail():Mail[]+listSendMail():Mail[]+listDraftMail():Mail[]sg,StringmsgId)ailId)ailId)ailId)+getAttachment():InputStream+deleteMail():void(Stringm(StringmailId)ailId,StringfileNam-setMessageRecipients():String(Messagem+createMimeMessage():Mim#sendMail():void(Messagem+sendMail():void(StringmeMessage(Mailmsg)ailId,Messagem<<control>>InputStreamDataSource+fileItem:FileItem+InputStreamDataSource()+getOutputStream():void+getContentType():String+getName():String<<boundary>>Compose_mail<<entity>>mail-id:varchar-msg_id:varchar-subject:varchar-from:varchar-to:varchar-cc:varchar-bcc:varchar唯一标示邮件消息ID邮件主题发送者邮件地址接受者邮件地址抄送邮件地址密送邮件地址-content:longchar-is_html:bit是否-send_data:datetim-is_emergent:bit-is_need_receipt:bit-mail_type:integer-save_time:datetim-user_id:varchar-domain_id:varchar-attachment:logchar邮件内容HTML格式邮件e邮件发送日期时间邮件是否紧急邮件是否需要回复类型〔收件箱、已发送、草稿邮件e邮件保存时间邮件所属用户ID邮件所属邮件效劳器ID邮件附件原文件名列表+getMsgId():String+setMsgId():void(Stringm+其余省略()sgId)<<boundary>>
listdraft<<control>>MimeMsgParsere)sg,Stringrecipients)ail,Listattachments)sg)-mimeMsg:MimeMessage-content:String-html:boolean-needEncode:boolean+MimeMsgParser()+is
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省汕尾市2025学年八年级上学期数学应用题(和差倍)综合测评试题
- 2025年高考数学模拟试题:三角函数与平面向量综合解题策略解析卷
- 2025年马来西亚留学英语考试(MUET)高级模拟试卷(商务词汇)-掌握2025年商务英语专业词汇
- 高中生物选修三模块2025年秋季学期期末考试试题解析
- 高中地理必修三单元测试卷2025:地理信息技术与地理信息处理
- 安全生产珍爱生命
- 2025年护士执业资格考试题库(社区护理学专项)-社区护理案例分析试题
- 成人高考数学(理)冲刺全真模拟试卷押题预测班必刷真题
- 2025年全国导游资格考试导游业务案例分析真题汇编与模拟
- 广东省广州市白云区2024-2025学年五年级上学期期末英语试题
- 钢板桩安全技术交底
- 师德师风-做“四有”好老师
- 衣食住行见证改革开放时代变迁-(修订)
- 弱电智能化施工方案
- TQGCML 3946-2024 柴油发电机组维护保养规范
- DGTJ08-9-2023 建筑抗震设计标准
- 输变电工程质量通病防治手册
- 新生儿X线检查
- 2024年江西省中考生物·地理合卷试卷真题(含答案逐题解析)
- 【暑假衔接】知识点专题13 写话 (讲义+试题) 二升三年级语文(含答案)部编版
- 老年人智能手机使用教程课件
评论
0/150
提交评论