摘要:本系统软件名为电子邮件客户端软件,是基于SMTP和POP3协议从底层开发的,实现了邮件发送和接收的基本功能。本系统软件是由发送邮件、接收邮件、账户管理和通讯录四个模块组成。发送邮件模块主要功能是解析SMTP协议和实现发送邮件内容及附件,其中类MailSend是本模块的核心。接收邮件模块主要实现接收邮件内容和下载附件的功能。
类MailReceive是接收邮件模块的核心,它是利用成熟的.DLL文件封装而成的。账户管理模块实现了账户的添加、修改和删除功能。通讯录模块能够记忆联系人信息,为快速联系提供方便。经过测试,本系统软件能够准确的完成邮件收发的常用功能,并且操作简单。
关键词:电子邮件客户端软件论文;SMTP;POP3;附件
0引言
互联网技术的飞速发展引领人类进入了网络信息时代,而电子邮件已经取代传统书信成为人们交流和交换信息的重要途径。越来越多的人在使用它,而且使用它的人数将会继续增加,同时根据生活和交流的需要,同一个人同时拥有了多个邮件,这样人们为了发送和接收邮件需要登陆不同的网页,使得操作繁多浪费了很多宝贵的时间。为了解决这一问题研发出了电子客户端软件,通过本软件可以完成不同的邮箱账户的邮件收发功能,而不需登陆多个不同的网页论文。
本系统软件名为电子邮件客户端软件,是基于SMTP和POP3协议从底层播放器开发的,实现了邮件发送和接收的基本功能,并且能够附带邮件附件的发送和接收,并附有通讯录功能。
SMTP[1]全称是简单邮件传输协议,是一种提供可靠且有效电子邮件传输的协议,它专门用来发送邮件用的。其中类MailSend实现了SMTP协议的解析和实现邮件内容和附件发送的核心类。POP3[2]是邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议,是专门用于接收邮件的。类MailReceive是利用成熟封装的DLL文件实现接收邮件内容和下载附件的核心类。经过测试,本系统能够准确实现纯文本邮件和带有附件的邮件的发送,以及邮件的接收和附件的下载。
虽然当前流行的各大邮件客户端软件比如Foxmail、OutlookExpress等都已实现邮件收发功能,但是除了最主要的收发信件之外,他们功能越来越复杂,但是人们平常真正用到的功能很少,很多功能尤其对于那些计算机知识相对缺乏的人来说,更加显得太过于华丽而不实用。有鉴于此,在了解RFC底层协议的基础上,开发了这个各种功能相对简单实用的电子邮件客户端软件,简化了很多不必要的功能,它更容易掌握和使用。
1需求分析及相关技术论文
1.1可行性分析本系统是采用C#语言来开发的WinForms窗体应用程序,开发工具使用基于.NET的VisualStudio2008。数据库方面拟用Access是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access的优点在于它能使用数据表示图或自定义窗体收集信息。
数据表示图提供了一种类似于Excel的电子表格,可以使数据库一目了然。,该数据库管理系统比较适合于中小型系统的开发,而且技术方面也比较成熟。
该系统的可行性[3]分析包括以下几个方面的内容:
(1)社会因素方面的可行性本系统用于邮件的发送和接收,无法律和政策方面的限制。
(2)经济方面的可行性本系统作为一个实训的毕业设计项目,无需投入过多开发经费,并且本系统实施后可以用于个人收取和发送邮件等邮件处理,同其他邮件客户端软件Foxmail、OutlookExpress等相比较简化了操作功能,节约了繁琐功能要花费的时间。
(3)技术方面的可行性技术上的可行性分析主要在于分析技术条件是否能顺利完成开发工作,硬、软件能否满足开发者的需要等论文。
软件方面,网络化考试需要的各种软件环境都已具备,数据库[4]
服务器方面则有Access、SQLServer、Oracle等,均能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。其灵活性、安全性和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。
综上所述,此系统开发目标已明确,在技术和经济等方面都可行且投入少,见效快,所以此系统的开发应用是完全可行的。
1.2需求分析随着互联网络的快速发展,电子邮件已经成为人们交流和交换信息的重要途径。越来越多的人在使用电子邮件,并且它将逐步取代传统信件。根据生活和工作的需要,同一个人同时拥有了多个邮箱。使用这些不同邮箱发送和接收邮件需要登陆不同的网页,使得操作复杂并且浪费了很多宝贵的时间。为了解决这一问题研发出了电子客户端软件,通过本软件可以完成不同的邮箱账户的邮件收发功能,而不需登陆多个不同的网页。
本系统软件名为电子邮件客户端软件,是基于SMTP和POP3协议从底层开发的,实现了邮件发送和接收的基本功能。本系统软件是由发送邮件、接收邮件、账户管理和通讯录四个功能模块组成。
主要功能如下:
(1)发送电子邮件,包括简单的文本邮件和带附件的邮件。
(2)接收电子邮件,查看文本邮件并能够保存到本地,下载附件到本地。
(3)账户管理功能,实现对账户的添加、修改和删除。
(4)通讯录功能,记录和添加常用联系人和联系人信息
2概要设计论文
2.1系统总体功能架构系统为电子邮件发送和接收的客户端,由于同于一人拥有不同的邮箱账户,系统在实现基本的邮件发送和接收的同时,还有账户的管理,实现对不同用户名邮箱的信件发送和接收功能。发送的时候能够发送一个或多个附件,在接收邮件的时候,能够保存邮件内容和下载附件到本地。同时为了方便操作,添加有通讯录功能,添加有常用联系人。
系统总体功能架构如图2-1所示:
2.2账户管理模块由于同于一人拥有不同的邮箱账户,不同的邮箱即为不同的账户,系统在实现了账户管理功能,包括添加新账户、修改已存在账户信息、删除账户等功能。
账户主要管理功能如图2-2所示:
图2-2账户管理流程图2.3发送邮件模块邮件发送模块主要完成邮件发送功能,主要包括普通邮件、带附件(一个或多个)的邮件的发送,同时由于网络或其他原因不能够及时发送邮件的时候可以保存邮件为草稿到本地,以待网络完好或可以发送的时候再次发送该邮件。
发送邮件模块流程图如图2-3所示:
2.4接收邮件模块邮件接收模块主要完成接收邮件的相关内容,首先与邮件服务器连接,显示本用户的邮件数,然后根据输入要查看的邮件序号显示该邮件的相关信息,包括该邮件的发件人、主题、发送时间、附件的相关信息(有就显示附件名)、邮件的内容。另外查看邮件的内容的时候可以以文本或网页的形式查看。在查看玩邮件内容以后可以右击选择保存文本内容到本地。
如果邮件带有附件,可以下载邮件的附件到本地。流程图如图2-4所示:
2.5通讯录模块为了方便用户的操作,设有通讯录功能,记录保存用户的常用联系人。本模块主要包括添加新的联系人、查看联系人、删除联系人等基本操作,在填写发送邮件的时候可以根据联系人的名字插入相应的邮箱地址,方便记忆。
2.6数据库的设计本系统既电子邮件客户端软件的数据简单,主要保存用户的登录账户信息和一些常用联系人的信息。
主要实体如下:
(1)账户信息(账户表users):主要包括账户名、邮箱的用户名、密码、邮箱的地址、SMTP服务器、POP3服务器、SMTP端口号、POP3端口号等信息。
(2)联系人信息(联系人表Friend):联系人的姓名、邮箱地址、联系电话、备注信息等。
电子邮件客户端的E-R图如下:
3系统详细设计与实现
3.1系统主界面设计系统主界面即为打开系统最初显示的界面,其主要内容包括三个菜单栏:文件、邮箱、通讯录和关于邮件处理的工具条。在主界面开启的时候加载用户所有的账户名(第一次使用没有账户,需添加)。在状态栏里面会显示登录时间、当前时间等一些信息。
图3-1为添加有两个账户的主界面图3-1主界面3.2账户管理模块的设计系统的使用者拥有不同的邮箱账户,不同的邮箱即为不同的账户,系统在实现了账户管理功能,包括添加新账户、修改已存在账户信息、删除账户等功能。调用该功能主要通过菜单邮箱和右击账户名列别实现。
3.3发送模块的设计
3.3.1发送邮件核心类MailSend本类主要是通过各种方法实现SMTP发送的全过程,实现的功能包括与服务器的连接、向服务器发送命令及邮件内容、读取服务器响应命令等。
主要成员变量及方法如下:
(1)网络连接类及实例TcpClienttc为TCP网络服务提供客户端连接类TcpClient实例对象tc。TcpClient类提供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数据。而实例化的过程也是连接SMTP服务器的过程。
(2)提供网络访问的基础数据流类及其实例NetworkStreamns类NetworkStream提供访问网络的基础数据流的方法。其中最基本也是最重要的两个方法就是Write()和Read()方法,主要向网络中写入数据和从网络中读取数据,且所有数据都是采用Base64编码。
(3)其他基本参数用来存放用户选择的附件的绝对路径名的符串一维数组FilePath,邮件所需的基本参数包括用于ESMTP等录检验用的用户名、密码,发送邮件需要的收信人,发信人地址以及主题等参数。
(4)重载的构造函数MailSend(ArrayList)此函数主要用于在初始化过程中调用方法AddAttachment(),把用户选择的附件的路径以参数的形式传给一维数组FilePath。
(5)设置附件绝对路径的方法AddAttachment(string[])将附件的绝对路径传给数FilePath,通过本函数函数就可以循环的动态的添加到IList接口的一个对象中了,方便以后在具体的实现的过程中的使用。
(6)得到上传的附件的文件流方法GetAttachmentStream(string)互联网的操作都是以网络流的形式来实现的,因此先将上传的附件转换成文件流,然后再用Write的方法把这些附件的文件流写入到网络中,来完成发送附件的操作。
(7)将字符串编码为Base64字符串的方法Base64Encode(string)由于ESMTP的LOGIN认证机制是采用Base64编码,当用户发出AUTHLOGIN的命令后,服务器返回334的应答码等待用户输入。如果身份确认后服务器返回235的应答码,否则返回失败信息。所以要将用户名和密码转换成Base64编码然后再发给服务器。此函数的作用就是把给定的字符串转换成相应的Base64编码的字符串。
(8)发送SMTP命令的方法SendCommand(string)这个函数的作用是把SMTP命令的字符串转换成对应的字节型值(C#中规定的Write方法只能写入字节型的数据)然后写入网络中,如果操作成功就返回一个标志为真的布尔型变量,如果操作失败或者发生异常就返回标志为假的布尔型变量。
(9)接受服务器应答的方法RecvResponse()它的作用就是从网络流中读取服务器返回的字节型的信息,将其转换成字符串型的变量,然后将其返回,可以通过其返回值来判断操作是否成功。
(10)重载的方法Dialog()它们的作用是与服务器交互,发送命令并接收回应。不同的是参数是字符串类型的那个函数,每次发送一条命令,并接受服务器的响应,根据响应的信息来判断交互的结果是否成功。而参数是字符串数组的函数每次发送的是一组命令,用于和服务器的交互,这个函数主要是用于ESMTP服务器的验证的功能,因为验证的过程是一个等待然后又输入的过程,因此将他们放在一个数组中有利于理解和操作。而他们的实现主要是通过调用上面的发送SMTP命令函数SendCommand以及接受SMTP服务器响应的函数RecvResponse来实现的。
(11)SMTP发送邮件方法SendMail()这是整个程序的核心部分。具体的实现SMTP协议的程序正是通过它一步一步实现并最终实现发送简单邮件甚至带附件的邮件的功能。而它的实现是调用以上给出的各个函数的结果。
3.4接收模块的设计
3.4.1接收邮件核心类MailReceive本类主要通过自身的各个方法的调用实现邮件的接收、分析、显示和下载附件。类的功能实现引用了以开发好的DLL文件OpenPOP.dll和MIMEParser.dll文件里的函数方法。
类的主要参数和方法如下:
(1)OpenPOP.MIMEParser.Messagem和POPClientpopClient:
对引用组件的函数操作的实例化对象,是接收和下载邮件的核心操作(2)构造函数MailReceive(string,string,string,string)通过构造函数初始化连接参数,用于连接邮件服务器。
(3)方法setMessage(int)因为显示邮件的具体内容和附件名是一封一封的实现的,通过本方法设置要接收的邮件序号,进而接收指定邮件的具体内容。
(4)方法connect()连接服务器(5)方法receiveMail(int)接收邮件,主要是本邮箱的邮件数目(6)方法getAttachmentName()获得附件名(7)方法getAttachments()下载附件到本地电脑4系统测试软件测试[5]是一个长期的过程,只要软件还在使用中,测试工作就一直存在。软件的测试从编码就开始了,并贯穿着软件的始终。测试任何产品都有两种方法,如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。
系统的主要功能就是邮件的发送和接收,是基于SMTP和POP3协议的,所以测试使用的邮箱账户需要开启smtp服务,目前sina、sohu、tom的邮箱提供免费SMTP服务,其sina邮箱中新注册时默认smtp服务是关停的,需要通过人工开启。目前126和163新开通的免费邮箱是不提供免费SMTP服务的,但是可开通增值服务邮箱伴侣或随身邮,即可同时获取poo功能。或者可以选择VIP邮箱。但是以前申请的老邮箱是提供免费的SMTP服务的,本测试主要使用已经开通SMTP服务的163邮箱进行测试的。
4.1账户管理和通讯录功能测试(1)添加新账户新账户信息:用户名和账户名按照软件自动生成,密码为abc123456,smtp服务器为smtp.163.com,端口号为110,pop3服务器为pop.163.com,端口号为25。
测试结果:添加账户成功。
(2)修改账户信息测试结果:修改账户名和账户密码成功(应该与邮箱密码一致)。
(3)删除账户测试结果:删除账户成功。
(4)添加新联系人新联系人信息:联系人姓名为张三,联系电话为123456,备注为同学。
测试结果:添加新联系人成功。
(5)删除联系人测试结果:删除联系人成功。
4.2邮件发送功能测试发送测试邮箱为:普通文本邮件发送测试结果:发送邮件成功。
(2)带有附件的邮件的发送附件有一个或多个附件组成,主要是一些常用的文件格式,比如txt、doc、jpg、rar、MP3等文件。
测试结果:发送邮件成功。
(3)对不同服务器的邮箱发送使用163测试的邮箱账户对163、126、雅虎邮箱、新浪邮箱、搜狐邮箱、QQ邮箱重复前两步的测试。
测试结果:发送邮件成功。
4.3邮件接收功能测试(1)接收邮件内容测试结果:接收邮件成功,能够查看邮件的各种信息,包括发件人、发送时间按、主题、邮件内容和附件名称。
(2)下载附件测试结果:下载附件成功。
通过上面的几部测试可以确定本系统已经能够实现正常的邮件发送和接收功能,并且能够完成对附件的操作,能完成正常的邮件功能,是一个简单实用的电子邮件客户端软件。
5结论
通过这次电子邮件系统软件的开发,我对软件开发过程有了更清晰的了解,首先是问题定义、需求分析,然后是功能设计、详细设计等,并对软件测试有了较深的理解。
本系统名为电子邮件客户端软件,基于SMTP和POP3协议从底层开发的,实现邮件发送和接收的基本功能,并且能够附带邮件附件的发送和接收,并附有通讯录功能。
[参考文献]
[1]编写基于SMTP网络应用程序.电脑爱者,2003.5
[2]编写基于POP3网络应用程序.电脑爱好者,2003.6
[3]李代平.软件工程(第2版).清华大学出版社,2008
[4]魏祖宽.数据库系统及应用.电子工业出版社,2008
[5]赵斌.软件测试技术经典教程.北京:北京科学出版社,2007