简单邮件客户端设计_第1页
简单邮件客户端设计_第2页
简单邮件客户端设计_第3页
简单邮件客户端设计_第4页
简单邮件客户端设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算网络计算网络课程设计课程设计 学 院_ _ 计算机学院_ 专 业_网络工程_ 年级班别_2012 级(3)班 _ _ 学 号_ 学生姓名_王彦德_ 课 题 简单的电子邮件客户端 指导教师_ 何翠红 _ 成 绩 计算机网络课程设计任务书计算机网络课程设计任务书 设计题目利用利用 MyEclipseSWT-Designer 实现电子邮件客户端实现电子邮件客户端 已知技术参 数和设计要 求 1.设计图形用户接口(GUI)的电子邮件客户端,与收件人 SMTP 服务器交互, 实现邮件的发送。 2.界面设计中至少包含用户输入收件人地址、邮件主题、发件人地址、文 本电子邮件内容编辑等的编辑框,以及发送邮

2、件(Send)、清除邮件内容 (Clear)、退出客户端(Exit)等的命令按钮等。 3.如果可能,实现附件发送,完成该项功能将得到加分加分。 设计内容与 步骤 1.阅读 RFC821-Simple Mail Transfer Protocol,熟悉 SMTP 协议; 2.熟悉 Java Socket 实现网络通信的基本机制; 3.熟悉 TCP Socket 程序设计方法; 4.熟悉 MyEclipse+SWT-Designer 的 GUI 应用程序开发环境的安装、使用; 5.电子邮件客户端用户界面设计; 6.电子邮件客户端功能实现; 7.课程设计任务说明书。 设计工作计 划与进度安 排 1.

3、SMTP 4 小时 2.Java TCP Socket 程序设计基础 2 小时 3.MyEclipseSWT-Designer 环境安装与使用 8 小时 4.电子邮件客户端 GUI 界面设计 4 小时 5.电子邮件客户端功能实现 12 小时 6.课程设计说明书 10 小时 目录目录 简单邮件客户端设计说明书简单邮件客户端设计说明书.1 一 前言.1 二 需求分析.1 2.1 功能需求.1 2.2 开发环境工具.1 2.3 所需要的知识.2 三 概要设计.2 3.1 邮件系统各功能概述.2 3.1.1 JavaMail 简介.2 3.1.2 设计目标.3 3.1.3 系统功能概述.3 3.2 邮

4、件管理系统总体设计方案.4 3.2.1 系统体系结构.4 3.2.2 功能模块.4 3.3 系统开发的技术难点和解决方案.5 3.3.1 MIME Messsage 的解析.5 3.3.2 邮件发送.6 3.3.3 系统性能问题.6 3.4 系统特点.7 3.5 系统具体设计.7 3.6 关键代码.11 3.7 结束语.20 简单邮件客户端设计说明书简单邮件客户端设计说明书 一一 前言前言 随着互联网技术及网络办公化的发展,电子邮件成为人们主要的通信方式之一。越来 越多的人开始使用它。而且用它的人数势必会继续增加。虽然,现在已经有很多的邮件收 发软件例如著名的 FoxMail ,但是对于大多数

5、的非专业的人来说它还是有点难度。因此, 我们所设计的基于 JavaMail 的邮件收发系统就利用 JavaMail 开发包的高级应用和 E-Mail 的相关协议开发出这个功能相对简单,但是实用、方便、快捷的邮件收发系统。主要用于 帮助用户将邮件发送给 SMTP 服务器和从 POP3 邮件服务器读取用户的电子邮件。它集邮件 的撰写、发送和接收功能与一体。并且支持附件的发送和接收以及其它一些附加功能的实 现。虽然它没有 FoxMail 那么强大的功能,但是它容易掌握和使用。整个系统功能流畅, 从操作简便、界面友好、灵活实用的要求出发,使用户之间的交流能够更加地方便和快捷。 本人结合 SMTP 以及

6、 POP3 协议的实现原理、相关 JavaMail API 帮助文档以及相关参考 书,实现了一个工作在 PC 下的邮箱客户端程序,该程序基本上实现了一个邮箱所对应的所 有功能。 二二 需求分析需求分析 2.1 功能需求功能需求 (1)开发一个 JavaMail API 下的邮箱客户端,实现邮件的发送、接收以及。 (2)通过输入服务器地址、用户名、密码,可以实现远程 FTP 服务器登录。 (3)提供本地文件和文件夹的上传功能,对 FTP 主机文件进行下载和删除。 (4)提供对本地目录的读取与返回,能够列出文件和文件夹。 (5)FTP 提供两种工作模式的选择,Port 模式(主动模式)和 Pass

7、ive 模式(被动模 式) 。 2.2 开发环境工具开发环境工具 (1)使用编程工具:MyEclipse SWT-Designer (2)使用的语言:Java (3)开发平台:Mac OS X 10.6.8 2.3 所需要的知识所需要的知识 (1)计算机网络的基本知识 (2)了解 SMTP 协议以及 POP3 协议基本实现原理 (3)使用 Windows 下的 Eclipse 编译器的使用方法 (4)熟悉邮件的各项功能。 三三 概要设计概要设计 3.1 邮件系统各功能概述邮件系统各功能概述 3.1.1 JavaMail 简介简介 JavaMail API 是 Java EE 的一部分,是 Ja

8、va SE 的可选组件。该组件提供了一个平台 无关、协议独立的框架,预置了一些最常用的邮件传送协议的实现方法,通过一组 API 来 模拟邮件系统。提供 Email 的发送和接收服务。它借鉴了 IMAP、MAPI、CMC 等消息系统 API 的设计,采用面向对象的思想将接 2008 年 4 月 18 日收到接口与实现相分离,支持存 取方式、消息格式、消息传送协议不同的邮件消息系统,可以简便的为应用程序增加 Email 支持,广泛应用于构件邮件和消息应用系统 JavaMail API 封装了电子邮件功能 中:邮件对象、发送、身份认证、接收等功能。其核心类有:Session、Authenticato

9、r Address Message Transport、Store、Folder 等。其中 Session 是邮件操作的接口,用于 建立了基本的邮件会话;Authenticator 类提供访问邮件服务器所需的认证信息;Message 描述基本的邮件消息,是收发邮件的操作单位;Transport 是发送邮件时所用的协议,通 常是 SMTP;Store 模拟了消息数据库及其内部存储消息的目录的访问协议;Folder 用于描 述消息数据库中的目录结构。一个 Session 会有多个 Trans port,每个 Store 包含一系列的 Folder 和 Message,每个 Folder 又包含一系

10、列的 Folder 和 Message。借助这些类,就可以构建各种典型的邮件应用。JavaMail 的最新实现 是 14 版本,可以支持 POP3、IMAP4、SMTP 协议。由于 JavaMail 还需要 JavaBeans Activation Framework(JAF)框架的支持, 3.1.2 设计目标设计目标 公用邮箱是和外单位交互的主要渠道,用户获取和提交一些重要数据和文件,也是与 本单位其它部门进行业务的信息交换的重要渠道。公用邮箱不仅有 13 常办公相关的各类邮 件,还有很多其它种类的邮件。此外,一些与办公相关的邮件还会发送到工作人员的个人 邮箱中。工作人员使用 Foxmail

11、 或其它邮件客户端将公用邮箱中的邮件从服务器下载至 本地,然后进行处理。这样的工作模式存在的缺点有:邮箱中邮件太多,很难找到与工作 相关的邮件,工作效率低下,存在潜在处理风险;工作人员都利用邮件客户端存储和处理 邮件,造成资源浪费,且无法及时得悉邮件的处理情况,难以落实责任;难以对办公相关 的邮件进行统一归档和备份,并提供检索、统计、数据分析等服务;邮件帐号分散管理, 带来潜在的信息安全隐患。本系统的设计旨在解决这些问题,为工作人员提供一个基于 Web 的简洁、易用、安全可靠、功能完备的办公邮件处理平台。 3.1.3 系统功能概述系统功能概述 (1 1)邮件自动获取与过滤)邮件自动获取与过滤

12、系统每天实时或者在固定的时间,统一收集多个外部邮件服务上多个邮件帐号的新邮 件后汇总在一起,并根据发送地址和过滤规则对邮件进行过滤,提取服务器上的有效邮件, 通过人工干预或者自动化的机制将邮件基本信息存储在数据库中,附件存人文件服务器, 对完全重复的邮件通过比对后只保留一份。 (2 2)邮件分类)邮件分类 对过滤后的有效邮件,按照制定好的分类规则,根据邮件主题、发件人信息、附件属 性及关键词对邮件及其附件进行归类,并提供自动归类和人工干预后确定邮件类别两种灵 活的类别确认机制。 (3 3) 邮件提醒与处理邮件提醒与处理 在邮件归类后,对于新邮件,系统通过与短信发送平台的接口,将发件人、发送时间

13、、 主题、优先级等信息以短信的形式发送给相应邮件类别的处理者。邮件处理者通过网页登 陆系统,可以像使用 Web 邮箱那样,方便快捷的查阅和处理只属于自己需要处理的那些邮 件。 (4 4) 邮件管理邮件管理 系统向用户提供邮件检索、删除、调整分类等功能。可以统一直观的对:信息过滤情 况、信息分类跟踪、处理情况、审阅结果、处理者信息、反馈情 况等进行展示。还可以对邮件进行统计,生成月度及年度邮件统计报表。普通用户只 能管理与自己工作相关的邮件,系统管理员可以管理所有邮件。 (5 5)邮件帐号设定及过滤和分类规则定义)邮件帐号设定及过滤和分类规则定义 系统管理员可根据需求设定多个邮件帐号,将不同邮箱

14、的邮件汇总在一起。过滤规则 是系统选择接收邮件的依据,目前状况下,对邮件地址和发送时间进行过滤已能满足需求。 分类规则是对邮件进行分类的依据,对每个公司或单位,管理员可以根据业务类型定义邮 件及附件类别,然后指定该类别邮件的关键词、特征及处理者。 3.2 邮件管理系统总体设计方案邮件管理系统总体设计方案 3.2.1 系统体系结构系统体系结构 系统基于 BS 结构,采用 MVC(Mode1ViewController)模式,体系结构 系统采用三层结构: 第一层是客户端层,用户通过 IE、Firefox 等浏览器与系统交互,发起浏览、检索、 处理邮件、系统配置与管理等请求,并展示处理结果。 第二层

15、为服务器层,可以分为两个功能相对独立的部分,一个是 Web 服务器,用于响 应和处理客户端请求,通过请求处理程序与后台数据库交互,返回处理结果给浏览器;一 个是邮件处理部分,通过 JavaMail API 与邮件服务器交互,发送和接收邮件,并对有效邮 件进行解析与分类,将结果存放在数据库和文件系统中,然后借助短信发送平台的接口通 知用户处理邮件。 第三层为数据层,包括:用于存储系统信息、邮件信息的数据库服务器,存 储邮件附件的文件服务器。为了提高系统可扩展性和满足复杂应用逻辑的需求,在系 统第二层的 Web 应用中,是 MVC 模式的一种实现。 3.2.2 功能模块功能模块 系统涵盖了运行中心

16、日常邮件管理与维护的所有功能,共分为六个模块:邮件获取模 块、邮件发送模块、邮件分类模块、邮件处理模块、邮件管理模块、联系人模块。这些模 块功能相对独立,具有高内聚、低耦合的特点,每个模块都有定义良好的接口,可以扩展 和增加复杂的应用逻辑。 其中,邮件发送模块可以发送文字,图片,附件,并可以同时发送给不同的邮箱。其 中可编辑发送文字的大小格式颜色等。 邮件获取模块可以获取邮件,在收件箱可以看到邮件列表,刷新可见新邮件。 邮件分类模块是将邮件客户端分为发信箱,收信箱,已发送,已删除 邮件管理模块是可对邮件删除,回复,彻底删除,对已删除的邮件可以恢复,刷新收 信箱。 邮件处理模块是对邮件的查看,下

17、载附件,回复。 联系人模块是可以添加,删除联系人,发邮件的时候可以直接点击已添加过的联系人 进行发送。 3.3 系统开发的技术难点和解决方案系统开发的技术难点和解决方案 3.3.1 MIME Messsage 的解析的解析 MIME(Multipurpose Internet Mail Extension)协议是目前应用最广泛的邮件协议, 用于定义邮件的格式,它可以包含文本、图像、音频、视频以及其它 应用程序专用的数据。邮件的解析实际上可以就是解析 MIME 消息的过程,是邮件过滤、 分类、管理等工作的前提。通常情况下,一个 MIME 消息由消息头(Headers)和消息体 (Content)

18、组成。消息头包括:发送者、接收者、发送时间、主题、优先级、邮件内容类型、 MIME 版本号等信息。消息体为邮件的内容,它可以为简单的文本,也可以是包含多个分段 (Part)的多重消息(Muhipart),而其中每个分段的消息都有自己的消息头和消息体。对于 不带附件的简单邮件,其消息体的内容类型是纯文本,text/plain 或者 text/html 等。对 于带附件或者包含多种 内容格式的邮件,其消息体为 muhipart 类型,通常为: muhipart/mixed、muhipart/related 或 multipart/alternative.比如:邮件正文、附件、 HTML 信件等。因

19、此,邮件消息的解析过程实际上是一个后序周游整棵 MIME 消息树的过程。 消息的解析需要递归访问消息中的每个消息体,也就是树的叶结点,从中获取相关信息, 并生成一个邮件对象,用于随后的邮件分类和写人数据库操作。在解析时,需要将发送者、 接收者、主题、发送时间、正文等有用信息存储在定义好的邮件对象中,将附件和 HTML 格 式的信件存储在文件系统,并将附件的文件名和文件路径存储在邮件对象中。 3.3.2 邮件发送邮件发送 Email 的发送实际上就是构造一个 MIME 消息的过程。JavaMail API 提供了相应的接口 用于构造一个邮件消息,但是相对较复杂。本系统采用 Apache 的开源工

20、具包 Commons Email 来实现邮件发送。Commons Email 构建于 JavaMail API 上,对 JavaMail 进行了再封 装,提供了极为简便的借口用于通过 Java 程序发送 Email。它提供的主要类有: SimpleEmail(用于发送简单的文本类型 Email)、MultiPartEmail(用于发送带附件的 Email)、 HtmlEmail(用于发送 Html 格式的邮件)、EmailAttachment(描述 Email 的附件)。 借助 Commons Email 工具包发送一个简单 Email 只需要创建 SimpleEmail 对象,设置 SMTP

21、 服务器、认证信息、发送者、接收者、主题、正文,然后发送即可。要发送一个带附 件的邮件,只需要构造一个 MuhiPartEmail 对象,设置和简单 Email 一样的属性,然后构 造附件对象并将之附加在 MuhiPartEmail 中即可。不难看出采用了 Commons Email 工具包 后,邮件的发送十分简洁,只需要构建相应的附件和邮件内容即可,而且工具包还支持直 接用网络上的文件作为附件内容。 3.3.3 系统性能问题系统性能问题 邮件服务器上可能会有很多封邮件,如何判断一封邮件是否被处理过,并对未处理的 邮件消息进行过滤与分类是系统的一个性能瓶颈。系统基于 Web 技术构建客户端,而

22、 Web 应用程序不可避免的会有频繁的数据库操作,建立数据库连接是相当耗费资源和时间的操 作。在 JSP 应用中若直接采用 JDBC 接口访问数据库,必然会频繁建立和关闭数据库连接, 从而导致服务器性能下降。为保证系统高效运行,采用如下的策略来提高整体性能: (1 1)多线程技术)多线程技术 每个 Email 消息的处理是相对独立的过程,因而采用多线程技术同时处理多封邮件是 提高性能的最简单可行的做法。系统共使用 8 个线程处理邮件消息,根据邮件消息的总数 ,就能计算出每个线程所需要处理的消息数为 N=M8(表示取上整)。其中第 k 个线程 处理邮件消息队列中第 8i+k(i=0,1, ,N

23、一 1)个消息,以倒序的方式处理可以使得消 息相对均匀的分配给处理线程,并保证有效消息先被处理。 (2 2) 灵活高效的过滤机制灵活高效的过滤机制 每个 Email 都会对应一个固定的 MessageID 和 SentDate,在解析时很容易获取。系 统会对每个帐号设定邮件开始接收 13 期(ReceiveStartDate),在处理 Email 消息时,先 根据 SentDate 来判断,若在该 13 期前,则不予以处理。每次接收完成后,更新 ReceiveStartDate 至当前 13 期。为了避免重新设定 ReceiveStartDate 或者重新执行接 收任务时,对已经处理过的有效邮件重复处理,系统提供两种机制,一种是不在服务器上 保留副本,这样每次获取的必然是新邮件;一种是保留副本,但利用 Property 文件记录每 个符合要求的消息的处理情况,以便快速判断邮件消息是否被处理过。 (3 3) 采用数据库连接池技术采用数据库连接池技术 连接池会在初始化时保持一定数量的数据库连接,应用程序在操作数据库时,从连接 池中获取一个连接,完成操作后释放连接,这样大大提高了系统性能。保存邮件信息至数 据库时,系统采用 Ap

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论