java邮件系统设计论文.doc
《java邮件系统设计论文.doc》由会员分享,可在线阅读,更多相关《java邮件系统设计论文.doc(67页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、.1/67成员成员负责模块负责模块进(组长)服务器管理模块、管理之发送模块,其他模块有参与马昌修改用户信息模块,其他模块有参与高宁管理模块(重要)何骥越登录模块王贺注册模块网络系统网络系统电子作为 Internet 最为广泛的应用之一,在人们的工作和生活中扮演着重要的角色,应用的普与使电子技术有了飞速的发展。网络电子系统在当今的互联网上比比皆是,不管是windows 上的普与,还 linux 上的稳定可靠和低廉;不管是分布式系统,还是基于 P2P,都离不开系统的基本原理。传输原理在 Internet 上将一段文本信息从一台计算机传送到另一台计算机上,可通过两种协议来完成,即 SMTP(Simp
2、le Mail Transfer Protocol,简单传输协议)和 POP3(Post OfficeProtocol,邮局协议 3)。SMTP 是 Internet 协议集中的标准。在 Internet 上能够接收电子的服务器都有 SMTP。电子在发送前,发件方的 SMTP 服务器与接收方的 SMTP 服务器联系,确认接收方准备好了,则开始传递;若没有准备好,发送服务器便会等待,并在一段时间后继续与接收方服务器联系。这种方式在 Internet 上称为“存储转发”方式。POP3 可允许 E-mail 客户向某一 SMTP 服务器发送电子,另外,也可以接收来自 SMTP 服务器的电子。换句话说
3、,电子在客户 PC 机与服务提供商之间的传递是通过 P0P3 来完成的,而电子在Internet 上的传递则是通过 SMTP 来实现。如图所示:发送主机服务器 B服务器 A客户SMTPPOPInternet注:服务器 A 是发送服务器(SMTP),服务器 B 是接收服务器(POP3/IMAP)1.电子的发送和接收电子在 Internet 上发送和接收的原理可以很形象地用我们日常生活中邮寄包裹来形容:当我们要寄一个包裹的时候,我们首先要找到任何一个有这项业务的邮局,在填写完收件人、地址等等之后包裹就寄出而到了收件人所在地的邮局,那么对方取包裹的时候就必须去这个邮局才能取出。同样的,当我们发送电子
4、的时候,这封是由发送服务器(任何一个都可以).2/67发出,并根据收信人的地址判断对方的接收服务器而将这封信发送到该服务器上,收信人要收取也只能访问这个服务器才能够完成。2.电子地址的构成电子地址的格式是“USERSERVER”,由三部分组成。第一部分“USER”代表用户信箱的,对于同一个接收服务器来说,这个必须是唯一的;第二部分“”是分隔符;第三部分“SERVER”是用户信箱的接收服务器域名,用以标志其所在的位置。3.电子的工作原理电子与普通有类似的地方,发信者注明收件人的与地址(即地址),发送方服务器把传到收件方服务器,收件方服务器再把发到收件人的中。更进一步的解释涉与到以下几个概念:MU
5、A-Mail User Agent,用户代理,帮助用户读写;MTA-Mail Transport Agent,传输代理,负责把由一个服务器传到另一个服务器或投递代理;MDA-Mail Delivery Agent,投递代理,把放到用户的里。整个传输过程如下:目前使用的 SMTP 协议是存储转发协议,意味着它允许通过一系列的服务器发送到最终目的地。服务器在一个队列中存储到达的,等待发送到下一个目的地。下一个目的地可以是本地用户,或者是另一个服务器。如果下游的服务器暂时不可用,MTA 就暂时在队列中保存信件,并在以后尝试发送。关于系统的其他一些技术,我们暂且不考虑。如下所示:服务器提供了系统的基本
6、结构,包括传输、分发、存储等功能,以确保能够发送到Internet 网络中的任意地方。目前服务器有两种不同的应用群体:ISP 提供商和企事业单位。Web 技术,使用户可以在任何地方使用浏览器登录服务器收发,而不用配置客户端程序。多域服务是一台物理服务器为多个独立注册 Internet 域名的企业或单位提供电子的服务,在逻辑上,这些企业和单位拥有自己独立的服务器(企业邮局),也可以称为虚拟服务器技术。对于 ISP 提供商和企业集团公司来说,多域服务器的支持能力是选择服务器的一个重要考虑因素。它可以方便地扩展其横向服务能力。使用 Linux 作为服务器,可以与 Sendmail、MySQL 等开源
7、软件共同使用,在满足用户需求的基础上降低了系统价格。服务器的安全防护,包括数据身份认证、传输加密、垃圾过滤、病毒过滤、安全审计等的多项安全技术。身份认证主要指 SMTP 发信认证,此项功能对于服务器是一个可选功能,主要目的是防止黑客利用自己的服务器攻击其他服务器。完善 SMTP 身份认证不仅可以制止黑客的恶劣行为,同时可以保证自己的服务器的各种资源可以充分地应用到日常的处理过程中,不会造成服务器的系统崩溃和资源浪费。.3/67无论是 POP3 协议还是 SMTP 协议,由于其在设计之初的缺陷,全部使用明码进行消息的传递,因此很容易造成信息的泄漏。可以通过两种方式提高系统的安全性:链路加密和端对
8、端加密。链路加密是使用加密工具(软硬件工具)对传输的线路进行数据加密,需要网络设施的支持。端对端加密是客户端到客户端的加密,是服务器应当提供的功能,目前较为流行的方式是使用 SSL/TLS 进行传输加密。垃圾大多是一些带有商业性质的广告等宣传品。据估计,仅仅商业性垃圾一项,每封垃圾所抵消的生产力成本就在 1 美元左右。单是下载垃圾所花费的上网费与费,每年就要花掉全球网民 94 亿美元。此外,许多病毒以与和信用卡盗用案例也与垃圾有关。因此,需要服务器具有垃圾处理的功能,抵御大部分垃圾的攻击。黑客攻击和病毒本来是两个相对独立的技术体系,但是随着网络的不断发展,网络工具与病毒越来越趋于融合,比如尼姆
9、达病毒既是病毒,也是网络攻击的一种方式,而应用广泛的电子,也成了病毒传播的主要方式之一。目前,大多数服务器都具有了基本的病毒防护的能力。目前的服务器,仅中文就有若干字符集,如 GB-2312、Big5 等等,虽然我们可以统一标准,但是,在实际的过程中,我们不可能统一所有的客户端,因此我们只能要求服务器支持多语言的环境。由于目前许多服务器处于电信托管等方式(服务器托管、服务器租用),不可能经常进行本地操作,因此目前服务器均提供了远程监控的功能。可以通过 Web 方式,监控服务器的工作状态,包括在线用户数、处理数量和速度、存储空间使用率等,并且可以随时对出现的发信高峰和网络攻击进行远程处理。电子系
10、统应该具备无限的扩展能力,Internet 网络的一个特性是变化无常,需要应对随时而来的应用尖峰。因此,需要电子系统具有无限的可扩展能力,这个能力主要体现在的处理能力和的存储能力上。为了能够使的处理能力可以无限扩展,就需要引入集群和负载均衡技术,使应用平台可以在需要的时候无限扩充,满足长期或临时的业务需要。对于 2000万以上的用户来说,每天发送的量至少在几千万封,为了便于存储,需要高性能的存储解决方案,最为理想的应该是 SAN 技术在服务器领域的应用。常见协议:SMTP(Simple Mail Transfer Protocol):SMTP 主要负责底层的系统如何将从一台机器传至另外一台机器
11、。POP(Post Office Protocol):目前的版本为 POP3,POP3 是把从电子中传输到本地计算机的协议。IMAP(Internet Message Access Protocol):目前的版本为 IMAP4,是 POP3 的一种替代协议,提供了检索和处理的新功能,这样用户可以完全不必下载正文就可以看到的标题摘要,从客户端软件就可以对服务器上的和文件夹目录等进行操作。IMAP 协议增强了电子的灵活性,同时也减少了垃圾对本地系统的直接危害,同时相对节省了用户察看电子的时间。除此之外,IMAP 协议可以记忆用户在脱机状态下对的操作(例如移动,删除等)在下一次打开网络连接的时候会自
12、动执行。.4/67本系统主要从简单的客户端来探讨一个系统。利用 JavaMail 来实现。以下是关于 JavaMail 的一些基本知识:JavaMail,顾名思义,提供给开发者处理电子相关的编程接口。它是 Sun 发布的用来处理 email 的 API。它可以方便地执行一些常用的传输。我们可以基于 JavaMail 开发出类似于 Microsoft Outlook 的应用程序。虽然 JavaMail 是 Sun 的 API 之一,但它目前还没有被加在标准的 java 开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载 JavaMail 文件。除此以外,你
13、还需要有 Sun 的 JavaBeans Activation Framework(JAF)。JavaBeans ActivationFramework 的运行很复杂,在这里简单的说就是 JavaMail 的运行必须得依赖于它的支持。在 Windows 2000 下使用需要指定这些文件的路径,在其它的操作系统上也类似。JavaMail 是可选包,因此如果需要使用的话你需要首先从 java.sun下载。目前最新版本是 JavaMail1.4,使用 JavaMail 的时候需要 Javabean Activation Framework 的支持,因此你也需要下载 JAF。安装 JavaMail 只
14、是需要把他们加入到 CLASSPATH 中去,如果你不想修改 CLASSPATH 的话,可以直接把他们的 jar 包直接 copy 到 JAVA_HOME/lib/ext 下。这样 JavaMail 就安装好了。JavaMail包中用于处理电子的核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder 等。Session 定义了一个基本的会话,它需要从 Properties 中读取类似于服务器,用户名和密码等信息。Javax.mail.Session:Session 类定义了一个基本会话(session),是 Java
15、Mail API最高层入口类。所有其它类都是经由这个 session 才得以生效。Session 对象用Java.util.Properties 对象获取信息,如服务器、用户名、密码与整个应用程序中共享的其它信息。Javax.mail.Message:一旦获得 Session 对象,就可以继续创建要发送的消息。这由Message 类来完成。因为 Message 是个抽象类,必需用一个子类,多数情况下为Javax.mail.internet.MimeMessage。MimeMessage 是个能理解 MIME 类型和头的电子消息,正如不同 RFC 中所定义的。虽然在某些头部域非 ASCII 字符
16、也能被译码,但 Message 头只能被限制为用 US-ASCII 字符。Javax.mail.Address:一旦您创建了 Session 和 Message,并将容填入消息后,就可以用 Address 确定信件地址了。和 Message 一样,Address 也是个抽象类。您用的是Javax.mail.internet.InternetAddress 类。Javax.mail.Authenticator:与 J 类一样,JavaMail API 也可以利用Authenticator 通过用户名和密码访问受保护的资源。对于 JavaMail API 来说,这些资源就是服务器。JavaMail
17、 Authenticator 在 Javax.mail 包中,而且它和 J 中同名的类 Authenticator 不同。两者并不共享同一个 Authenticator,因为 JavaMail API 用于 Java 1.1,它没有 J 类别。要使用 Authenticator,先创建一个抽象类的子类,并从 getPasswordAuthentication()方法中返回PasswordAuthentication 实例。创建完成后,您必需向session 注册Authenticator。然后,在需要认证的时候,就会通知 Authenticator。您可以弹出窗口,也可以从配置文件中(虽然没有
18、加密是不安全的)读取用户名和密码,将它们作为PasswordAuthentication 对象返回给调用程序。Javax.mail.Transport:消息发送的最后一部分是使用 Transport 类。这个类用协议指定的语言发送消息(通常是 SMTP)。它是抽象类,它的工作方式与 Session 有些类似。.5/67仅调用静态 send()方法,就能使用类的 缺省 版本:Transport.send(message);或者,读者也可以从针对自己的协议的会话中获得一个特定的实例,传递用户名和密码(如果不必要就不传),发送消息,然后关闭连接。Javax.mail.Store:Store 类实现特
19、定协议上的读、写、监视、查找等操作。通过Javax.mail.Store 类可以访问 Javax.mail.Folder 类。Javax.mail.Folder:Folder 类用于分级组织,并提供照 Javax.mail.Message 格式访问 email 的能力。具体用法大家可以查看 JavaMail API。简单示例:package fss.base;import java.util.*;import javax.mail.*;import javax.mail.internet.*;import java.util.Date;import javax.activation.*;imp
20、ort java.io.*;public class Mail/把本程序所用变量进行定义。具体在 main 中对它们赋植。private MimeMessage mimeMsg;/MIME 对象private Session session;/会话对象private Properties props;/系统属性private boolean needAuth=false;/smtp 是否需要认证private String username=;/smtp 认证用户名和密码private String password=;private Multipart mp;/Multipart 对象,容,
21、标题,附件等容均添加到其中后再生成/MimeMessage 对象public Mail(String smtp)setSmtpHost(smtp);createMimeMessage();public void setSmtpHost(String hostName)System.out.println(设置系统属性:mail.smtp.host=+hostName);if(props=null)props=System.getProperties();/获得系统属性对象props.put(mail.smtp.host,hostName);/设置 SMTP 主机public boolean c
22、reateMimeMessage().6/67try System.out.println(准备获取会话对象!);session=Session.getDefaultInstance(props,null);/获得会话对象catch(Exception e)System.err.println(获取会话对象时发生错误!+e);return false;System.out.println(准备创建 MIME 对象!);try mimeMsg=new MimeMessage(session);/创建 MIME 对象mp=new MimeMultipart();/mp 一个 multipart 对
23、象/Multipart is a container that holds multiple body parts.return true;catch(Exception e)System.err.println(创建 MIME 对象失败!+e);return false;public void setNeedAuth(boolean need)System.out.println(设置 smtp 身份认证:mail.smtp.auth=+need);if(props=null)props=System.getProperties();if(need)props.put(mail.smtp.a
24、uth,true);else props.put(mail.smtp.auth,false);public void setNamePass(String name,String pass)System.out.println(程序得到用户名与密码);username=name;password=pass;public boolean setSubject(String mailSubject)System.out.println(设置主题!);.7/67try mimeMsg.setSubject(mailSubject);return true;catch(Exception e)Syst
25、em.err.println(设置主题发生错误!);return false;public boolean setBody(String mailBody)trySystem.out.println(设置体格式);BodyPart bp=new MimeBodyPart();bp.setContent(+mailBody,text/html;charset=GB2312);mp.addBodyPart(bp);return true;catch(Exception e)System.err.println(设置正文时发生错误!+e);return false;public boolean ad
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 邮件系统 设计 论文
限制150内