资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
成都电子机械高等专科学校课程名称C#专周专周题目电子邮件客户端程序姓名M班级09531学号27指导孝女师杨勇设计时间 2010-12-202010-12-24成都电子机械高等专科学校计算机工程系目录一、系统分析1. 用户需求2. 系统功能需求二、系统概要设计1. 系统开发环境2. 系统运行环境总结设计三、命名控件MailSend1. 发送邮件类SmtpMail2. AddExtra 类3. AccountHandle 类4. Tree View 显示四、邮件运行时的界面新建邮件帐 1.发送邮件界面五、结论及总结六、参考文献电子邮件又称电子信箱,电子邮政,它是一种利用电子手段提供信息交换的 通讯方式。电子邮件在当今社会中扮演了一个很重要的角色。越来越多的人在使 用它。而且用它的人数势必会继续增加。一.系统分析1. 用户需求电子邮件不是一种“终端到终端”的服务,是被称为“存贮转发式”服务。 这正是电子信箱系统的核心,利用存贮转发可进行非实时通信,属异步通信方式。 即信件发送者可随时随地发送邮件,不要求接收者同时在场,即使对方现在不在, 仍可将邮件立刻送到对方的信箱N,且存储在对方的电子邮箱中。接收考可在他 认为方便的时候读取信件,不受时空限制。在这里,“发送”邮件意味着将邮件 放到收件人的信箱中,而“接收”邮件则意味着从自己的信箱中读取信件,信箱 实际上是由档管理系统支持的一个实体。因为电子邮件是通过邮件服务器(mail server)来传递档的。电子邮件的工作原理:(1) 电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合 的产物。电了邮件的传输是通过电了邮件简单传输协议(Simple Mail Transfer Protocol, 简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。(2) 电子邮件的基本原理,是在通信网上设立“电子信箱系统”,它实际上 是一个计算机系统。系统的硬件是一个高性能、大容量的计算机。硬盘作为信箱 的存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱”,每位用户 都有属于自己的一个电子信箱。并确定一个用户名和用户可以自己随意修改的U 令。存储空间包含存放所收信件、编辑信件以及信件存档三部分空间,用户使用 门令开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作。系统 功能主要由软件实现。(3) 电子邮件的通信是在信箱之间进行的。用户首先开启自己的信箱,然 后通过键入命令的方式将需要发送的邮件发到对方的信箱中。邮件在信箱之间进 行传递和交换,也可以与另一个邮件系统进行传递和交换。收方在取信吋,使用 特定账号从信箱提取。我们开发的这个电子邮件客户端程序只是一个各种功能相对简单实用的 邮件客户端程序,简化了许多不必要的功能。我们就利用SMTP和Pop协议从 底层开发了这个软件。SMTP全称是简单邮件传输协议,它专门用来发送邮件用 的。Pop全称是邮局协议,是专门用于接收邮件的。我主要是负责如何实现发送 邮件功能的。MailSend命名空间是我整个程序的核心。它包括两个类。在 SmtpMail的类中包含了一个SendMail的方法,它从底层详细地实现了和服务器 的交互操作。你既可以用它发送一个纯文本邮件,也可以发送一个带有附件的邮 件,理所当然地,你也可以使用不同的SMTP服务器。经过测试,证实此软件 是一个支持多收信人,多附件的群发软件。虽然它没有FoxMail那么强人的功能, 但是它容易掌握和使用。2. 系统功能需求以FoxMail电子邮件客户端软件为模板,主要是实现电子邮件的发送这个功 能。主要设计实现电子邮件的发送时需要的类。二.系统概要设计1. 系统开发环境 AMD Athlon(TM),512MB 内存,80GB 硬盘。 Microsoft WindowsXP Professional。 Microsoft Visual Studio 2003(C Sharp)。 Microsoft Developer Network for Visual Studio .NET 2003。2. 系统运行环境 Intel Pentium 2及以上处理器,32MB以上内存,4GB以上硬盘。 Microsoft Windows9x/NT 操作系统。 800 x 600或以上的屏幕分辨率。 确保机器上安装有.NETFrameWork 1.0或者以上版本。3. 总体设计1)系统构架根据以上分析可以得到电子邮件客户端软件的总体构架,如同7.1所示。主界而用户(1)系统总体用例图。根据系统需求和软件的架构图可以得到系统总体用例图如图7.2所 示。(2)程序功能框图。客服端软件通讯薄管理电子邮件的分类管理电子邮件编号带有附件的邮件发送简单邮件发送带有附件的邮件接收简单邮件接收(3)发送邮件类,是发送邮件的核心,类名为SmtpMsil,隶属于命名空间MailSend。封装 了发送邮件的具体实现方法,也是具体的RFC用代码实现的过程。而用户通过具体的操作 接口,接口与SmtpMail类通过交互操作来实现用户发送信件的操作。(4)附加小功能类,是获取一些诸如系统时间、当前川户名以及本机IP之类的类,类名AddExtra,隶属于命名空间MailSend。4. 出错处理设计(1) 系统应具有相当健壮性,避免或降低由系统错误所造成的数据损坏。(2) 对关键性操作,如删除等提供竟高和确认机制。5. 安全设计系统提供严格的身份验证机制和密码管理。6. 维护设计系统严格按照设计规范进行设计,并保持各阶段文档的完整性,为以后对软件的维护打好基 础。三命名控件MailSend由于在C Sharp语言中,都是以命名控件来组织程序的。而所有的类都归属 于一个特定的命名空间下。需要的命名空间系统本身自带了一部分,而且如果系 统没有你需要的命名空间的话,就可以自己编写,本节中的这个命名空间就是由 于需要而编写的。而调用某一个类中的某个变量成员的方法就是通过命名空间 名.类名.变量成员来访问的,当然在C Sharp中如果在程序幵始通过Using命 名空间名,就可以直接的象O+那样来访问成员变量,可以说相当的方便,这些 都会在程序中体现出来,再次不再做过多的叙述。1发送邮件类SmtpMail1. 1主要成员变量说明1) 网络连接类及实例TcpClient tc为TCP网络服务提供客户端连接类TcpClient实例对象tc。TcpClient类提 供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数 据。而实例化的过程也是连接SMTP服务器的过程。它的重载方法之一的两个 参数一个为服务器名称字符串,另一个为服务器的埠。2) 提供用于网络访问的基础数据流及其实例NetworkStream ns此类提供访问网络的基础数据流的方法。其中最基木也是最重要的两个方法 就是Write ()和Read ()方法,至于参数不再次赘述。3) 一维字符串数组变量FilePath此字符串数组主要用来存放用户选择的附件的绝对路径名,并在发送带附件 的邮件吋用到。4) 发送邮件所需的基木参数比如用于ESMTP等录检验用的用户名、密码,发送邮件需要的收信人,发 信人地址以及主题等等在此不再赘述。1. 2主要成员函数说明1) 重载的构造函数SmtpMail ()此函数主耍用于在初始化过程中,把用户选择的附件的路径以参数的形式传给 FilePatho2) 添加附件的函数 AddAttachment传给FilePath的路径,通过这样一个函数就可以循环的动态的添加到IList 接口的一个对象中了,方便以后在只体的实现的过程中的使用。3) 得到上传的附件的文件流 GetStream由于在网络中的操作都是以网络流的形式来实现的,因此先将上传的附件转换成文件流,然后再用Write的方法把这些附件的文件流写入到网络中,来完成发送附件的操作。具体实现代码如下所示:private string GetStream(string FilePath)/建立文件流对象System.IO.FileStream FileStr=new System.IO.FileStream(FilePath,System.IO.FileMode.Open);byte门 by=new byteSystem.Convert.ToInt32(FileStr.Length);FileS tr.Read(by,O,by.Length);FileS tr.Close();return(System.Convert.ToBase64String(by);4) 将字符串编码为Base64字符串的函数Base64Encode由于ESMTP的LOGIN认证机制是采用Base64编码,当用户发出 AUTHLOGIN的命令后,服务器返回334的应答码等待用户输入。如果身份确 认后服务器返冋235的应答码,否则返冋失败信息。所以要将用户名和密码转换 成Base64编码然后再发给服务器。此函数的作用就是把给定的字符串转换成相 应的Base64编码的字符串。5) 发送SMTP命令的函数SendCommand这个函数的作用是把SMTP命令的字符串转换成对应的字节型值(C#中规 定的Write方法只能写入字节型的数据)然后写入网络中,如果操作成功就返回 一个标志为真的布尔型变量,如果操作失败或者发生异常就返冋标志为假的布尔 型变量。只体代码如下所示:private bool SendCommand(string str)/定义一个数组byte WriteBuffer;/设定一个布尔类型的变量 bool state=false;WriteBuffer = Encoding.Default.GetBytes(str);/加入防错机制,可以有效提高程序运行的效率和捕获出错信息try/向网络中写入数据ns.Write(WriteBuffer,O,WriteBuffer.Length); state=true; catch(Exception ex)/返回出错信息MessageBox.Show (ex.ToString (); state=false; /返回标志位 return state;6) 接受服务器应答的函数RecvResponse它的作用就是从网络流中读取服务器返冋的字节型的信息,将艽转换成字符 串型的变量,然后将其返回,可以通过其返回值来判断操作是否成功。具体实现 代码如下所示:private string RecvResponse() int StreamSize=O;string Return Value/定义一个字节型的数组trybyte ReadBuffer = new byte1024; /从网络流中读取数据,并返回读取的个数StreamSize=ns.Read(ReadBuffer,O,ReadBuffer.Length);catch (Exception ex)/返回异常信息MessageBox.Show(ex.ToString ();if (StreamSize!=O)
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号