论文_邮件收发管理系统_第1页
论文_邮件收发管理系统_第2页
论文_邮件收发管理系统_第3页
论文_邮件收发管理系统_第4页
论文_邮件收发管理系统_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

本科毕业论文说明书电子邮件收发系统的设计MANAGEMENTSYSTEMSTOSENDANDRECEIVEEMAIL学院(部)计算机科学与工程学院专业班级信息安全052学生姓名QQ49765400指导教师2009年6月2日I电子邮件收发系统的设计摘要电子邮件在当今社会中扮演了一个很重要的角色。越来越多的人在使用它。而且用它的人数势必会继续增加。虽然,现在已经有很多的邮件收发软件,但是对于大多数的非专业的人来说它还是有点难度稍嫌复杂。因此,我们就利用SMTP和POP3协议从底层开发了这个软件。SMTP全称是简单邮件传输协议,它专门用来发送邮件用。POP全称是邮局协议,是专门用于接收邮件。本次设计就是利用PHPAPACHE这一黄金组合来实现一个邮件收发管理系统,使用此系统,你既可以用它发送一个纯文本邮件,也可以发送一个带有附件的邮件,理所当然地,你也可以使用不同的SMTP服务器。经过测试,证实此软件是一个支持纯文本,或者带附件的邮件发送软件。关键词SMTP,POP3,邮件发送,附件MANAGEMENTSYSTEMSTOSENDANDRECEIVEEMAILIIABSTRACTEMAILINTODAYSSOCIETYPLAYSAVERYIMPORTANTROLEMOREANDMOREPEOPLEUSEITANDTHENUMBEROFPEOPLEUSINGITWILLCERTAINLYCONTINUETOINCREASEALTHOUGH,THEREAREALOTOFSOFTWARETOSENDANDRECEIVEMAIL,BUTMOSTOFTHENONPROFESSIONALPEOPLEITISRESPONSIBLEFORALITTLEBITMOREDIFFICULTTHEREFORE,WEWILLMAKEUSEOFSMTPANDPOP3PROTOCOLDEVELOPEDFROMTHEBOTTOMOFTHISSOFTWARETHEFULLNAMEOFTHESMTPSIMPLEMAILTRANSFERPROTOCOL,ISUSEDTOSENDEMAILPOPPOSTOFFICEPROTOCOLISTHEFULLNAMEISDEDICATEDTORECEIVINGMAILTHEDESIGNISTOUSEPHPAPACHEINTHISGOLDTOACHIEVEAPORTFOLIOMANAGEMENTSYSTEMTOSENDANDRECEIVEEMAIL,THEUSEOFTHISSYSTEM,YOUCANUSEITTOSENDAPLAINTEXTMESSAGE,YOUCANSENDANEMAILWITHATTACHMENTS,OFCOURSE,YOUCANALSOUSEADIFFERENTSMTPSERVERTESTEDTOCONFIRMTHISSOFTWAREISASUPPORTFORPLAINTEXT,OREMAILWITHATTACHMENTSSOFTWAREKEYWORDSSMTP,POP3,EMAIL,ATTACHMENTI目录摘要IABSTRACTII1引言111电子邮件介绍112开发背景213开发环境及运行环境2131开发环境2132运行环境22软件架构及系统用例图321系统架构322系统总体用例323程序功能框图324发送邮件函数425接收邮件函数43SMTP和POP3协议的研究531SMTP协议简介及工作原理5311SMTP简介5312SMTP协议的命令5313SMTP的工作原理532POP3协议介绍和工作原理6321POP3简介与命令6322POP工作原理简介74RFC822ARPA因特网文本信件格式的标准841RFC822简单介绍842信件的头部8421信头的一般格式8422结构化字段和非结构化字段9423信头字段的元素9424标准的信头字段105重要模块设计1451用户登录模块14511主要函数说明14II512部分主要代码1552发送带附件邮件模块15521关键函数15522部分主要代码1653收邮件模块17531主要函数说明18532部分主要代码1854查看邮件模块20541主要函数说明20542部分主要代码216软件运行时的界面2461登录邮件服务器2462发送邮件界面24621发送不带附件的邮件25622发送带附件的邮件2563查找邮件模块267系统测试2771同一SMTP服务器发送邮件的测试27711发送一封文本邮件给一个收信人27712发送一封带附件的邮件给一个收件人2772利用不同的SMTP服务器发送邮件的测试288结论29参考文献30致谢31附录A31附录B3211引言11电子邮件介绍电子邮件简称EMAI1又称电子信箱、电子邮政,它是种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是个简易、快速的方法。通过连接全世界的INTERNET,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是INTERNET资源使用最多的一种服务,EMAI1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。电子邮件不是一种“终端到终端”的服务,是被称为“存贮转发式”服务。这正是电子信箱系统的核心,利用存贮转发可进行非实时通信,属异步通信方式。即信件发送者可随时随地发送邮件,不要求接收者同时在场,即使对方现在不在,仍可将邮件立刻送到对方的信箱内,且存储在对方的电子邮箱中。接收者可在他认为方便的时候读取信件,不受时空限制。在这里,“发送”邮件意味着将邮件放到收件人的信箱中,而“接收”邮件则意味着从自己的信箱中读取信件,信箱实际上是由文件管理系统支持的个实体。因为电子邮件是通过邮件服务器MAI1SERVER来传递档的。通常MAILSERVER是执行多任务操作系统UNIX的计算机,它提供24小时的电子邮件服务,用户只要向MAILSERVER管理人员申请个信箱账号,就可使用这项快速的邮件服务。电子邮件的工作原理1电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的产物。电子邮件的传输是通过电子邮件简单传输协议SIMPLEMAILTRANSFERPROTOCOL,简称SMTP这一系统软件来完成的,它是INTERNET下的一种电子邮件通信协议。2电子邮件的基本原理,是在通信网上设立“电子信箱系统”,它实际上是一个计算机系统。系统的硬件是一个高性能、大容量的计算机。硬盘作为信箱的存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱”,每位用户都有属于自己的个电子信箱。并确定个用户名和用户可以自己随意修改的口令。存储空间包含存放所收信件、编辑信件以及信件存盘三部分空间,用户使用口令开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作。系统功能主要由软件实现。3电子邮件的通信是在信箱之间进行的。用户首先开启自己的信箱,然后2通过键入命令的方式将需要发送的邮件发到对方的信箱中。邮件在信箱之间进行传递和交换,也可以与另个邮件系统进行传递和交换。收方在取信时,使用特定账号从信箱提取。12开发背景当前流行的各大邮件客户端软件的除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功能尤其对于那些计算机知识相对缺乏的人来说,更加显得太过于华丽而不太实用。有鉴于此,在了解RFC底层协议的基础上,我们开发了这个各种功能相对简单实用的邮件客户端程序,简化了很多不必要的功能。13开发环境及运行环境131开发环境INTELCOREDUOT2050,2G内存,320G硬盘MICROSOFTWINDOWS2003企业版IIS60SMTPPOP3服务器,IP地址为192168126MACROMEDIADREAMWEAVER8APACHEPHP132运行环境INTELPENTIUM2及以上处理器,32M以上内存,4G以上硬盘MICROSOFTWINDOWSXP/NT操作系统800600或以上的屏幕分辨率IE60或者其他浏览器32软件架构及系统用例图21系统架构软件的总体架构如图21用户主界面主要功能选择图21软件架构图22系统总体用例用户登录发送邮件接收邮件纯文本邮件带附件邮件图22系统总体用例图23程序功能框图发送邮件接收邮件4WEB客户端电子邮件接收电子邮件发送附加功能简单邮件接收带有附件的邮件接收简单邮件发送带有附件的邮件发送电子邮件编写电子邮件的查询管理图23程序功能图24发送邮件函数是发送邮件的核心,函数名为IMAP_MAIL。封装了发送邮件的具体实现方法,也是具体的RFC用代码实现的过程。25接收邮件函数收邮件是邮件收发系统重要的功能之一,主要利用IMAP_CHECK和IMAP_SEARCH两个函数,其中OBJECTIMAP_CHECKRESOURCEIMAP_STREAM函数用于获取连接ID,并返回包含当前邮箱信息的对象,参数IMAP_STREAM为IMAP_OPEN函数成功连接上邮件服务器后所返回的连接标识。IMAP_SEARCH函数用于搜寻指定标准的信件。53SMTP和POP3协议的研究由于要开发的是邮件收发系统,就不得不用到SMTP协议和POP协议而其中最重要的要是SMTP(SIMPLEMAILTRANSFERPROTOCOL)协议。SMTP被用来在因特网上发送邮件,该协议规定了一些基本的命令和方法使客户端与服务器进行交互,以达到发送邮件的目的。31SMTP协议简介及工作原理311SMTP简介SMTP是SIMPLEMAILTRANSFERPROTOCOL的缩写,即简单邮件传送协议。使用SMTP虚拟服务器可以实现邮件的发送和接收,它提供客户端向服务器端发送邮件的功能,即客户端向服务器发出请求指令,服务器端则给出应答。其优点是速度快、可靠性高,易于操作。SMTP邮件信息为纯文本格式。文本中包含格式信息,如HTML以及客户使用指定在信息中的MIME类型,以便用合适的方式显示邮件。如果邮件中包含附件,则通过SMTP自动转变成合适的文本类型。312SMTP协议的命令SMTP分为命令头和信息头两部分,命令头主要完成客户端与服务器端的连接、验证等,整个过程由多条命令组成。由服务器给出的相应信息一般为3位数字的相应码和相应文本,不同的服务器回送相应码是遵守该协议的,而相应正文则不必。SMTP命令及相应信息够是单行的,信息体则是邮件正文部分,最后应以单独的”作为结束行。下面是客户端一些常用的SMTP指令。HELLOHOSTNAME与服务器连接并告知客户端使用的机器名,可以随便写。MAILFROMSENDER_ID告诉服务器发信人的地址。RCPTTORECEIVER_ID告诉服务器收信人地址。DATA传输信件内容,且最后要以只含”的特殊行结束。RESET取消刚才的指令,重新开始。VERIFYUSERID校验帐号是否存在此指令为可选指令,服务器可能不支持。QUIT退出连接。313SMTP的工作原理6SMTP通常有两种工作模式发送SMTP和接收SMTP。具体工作方式为发送SMTP在接到用户的邮件请求后,判断此邮件是否为本地邮件,若是直接投送到用户的邮箱,否则向DNS查询远端邮件服务器的MX纪录,并建立与远端接收SMTP之间的一个双向传送通道,此后SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方面传送。一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此重复多次。当接收者收到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,则返回OK应答。32POP3协议介绍和工作原理321POP3简介与命令POP即为POSTOFFICEPROTOCOL的简称,是一种电子邮局传输协议,而POP3是它的第三个版本,是规定了怎样将个人计算机连接到INTERNET的邮件服务器和下载电子邮件的电子协议。它是INTERNET电子邮件的第一个离线协议标准。简单点说,POP3就是一个简单而实用的邮件信息传输协议。POP协议允许工作站动态访问服务器上的邮件,目前已发展到第三版,称为POP3。POP3允许工作站检索邮件服务器上的邮件。POP3传输的是数据消息,这些消息可以是指令,也可以是应答。创建一个分布式电子邮件系统有多种不同的技术支持和途径,诸如POP(邮局协议)、DMSP(分层式电子邮件系统协议)和IMAP(因特网信息访问协议)。其中,POP协议创建最早因此也最为人们了解;DMSP具有较好的支持“无连接”操作的性能,但其很大程度上仅限于单个应用程序(PCMAIL);IMAP提供了POP和DMSP的扩展集并提供对远程邮件访问的三种支持方式离线、在线和无连接。POP协议支持“离线”邮件处理。其具体过程是邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或MAC。一旦邮件发送到PC机或MAC上,邮件服务器上的邮件将会被删除。POP3并不支持对服务器上邮件进行扩展操作,此过程由更高级的IMAP4完成。POP3使用TCP作为传输协议。通过POP,客户登录到服务器后,可以对自己的邮件进行删除,或是下载到本地。POP3的常用命令如表31所示。7表31POP3常用命令命令参数状态描述USERUSERNAME认可此命令与下面的PASS命令如果都发送成功,则将使状态转换PASSPASSWORD认可向POP3服务器发送指定邮箱的登录密码,进行密码验证APOPNAME,DIGEST认可DIGEST是MD5消息摘要STATNONE处理请求服务器发回关于邮箱统计资料邮箱总数和总字节数UIDLMSG处理回送邮件唯一标识符LISTMSG处理回送邮件数量和每个邮件的大小RETRMSG处理回送由参数标识的邮件的全部文本DELEMSG处理服务器将由参数标识的邮件标记为删除,由QUIT命令执行RSETNONE处理服务器将重置所有标记为删除的邮件,用于撤销DELE命令TOPMSG处理服务器将回送由参数标识的邮件前N行内容,N是正整数NOOPNONE处理服务器返回一个肯定的相应,不做任何操作QUITNONE更新断开与POP3的连接,同时将带有删除标记的邮件进行物理删除322POP工作原理简介下面就让我们一起来看看电子邮件软件收取电子邮件的过程,一般我们在电子邮件软件的账号属性上设置一个POP服务器的URL(比如POP163COM),以及邮箱的账号和密码。这个在收信过程中都是用得到的。当我们按下电子邮件软件中的收取键后,电子邮件软件首先会调用DNS协议对POP服务器进行解析IP地址,当IP地址被解析出来后,邮件程序便开始使用TCP协议连接邮件服务器的110端口,因为POP服务器是比较忙的,所以在这个过程中我们相对要等比较长的时间。当邮件程序成功地连上POP服务器后,其先会使用USER命令将邮箱的账号传给POP服务器,然后再使用PASS命令将邮箱的账号传给服务器,当完成这一认证过程后,邮件程序使用STAT命令请求服务器返回邮箱的统计资料,比如邮件总数和邮件大小等,然后LIST便会列出服务器里邮件数量。然后邮件程序就会使用RETR命令接收邮件,接收一封后便使用DELE命令将邮件服务器中的邮件置为删除状态。当使用QUIT时,邮件服务器便会将置为删除标志的邮件给删了。通俗地讲,邮件程序从服务器接收邮件,其实就是一个对话过程,POP协议就是用于电子邮件的一门语言。84RFC822ARPA因特网文本信件格式的标准说道发送和接受邮件,我们就必须不得不提RFC822了。RFC822的全称是“ARPA因特网文本信件格式的标准”STANDARDFORTHEFORMATOFARPAINTERNETTEXTMESSAGES。该标准提供了邮件内容的格式和相关语义。41RFC822简单介绍RFC822规定的电子邮件内容全部由ASCII字符组成,就是通常所说的文本文件,因而标准将它称为INTERNET文本信件INTERNETTEXTMESSAGES。从直观上看,信件非常简单,就是一系列由ASCII字符组成的文本行,每一行以回车换行符“CRLF“,就是ASCII码的13和10结束。从组织上看,信件内容结构分为两大部分,中间用一个空白行只有CRLF符的行来分隔。第一部分称为信件的头部THEHEADEROFTHEMESSAGE,包括有关发送方、接收方、发送日期等信息。第二部分称为信件的体部BODYOFTHEMESSAGE,包括信件内容的正文文本。信头是必需的,信体是可选的,即信体可有可无。如果不存在信体,用作分隔的空白行也就不需要。在信体中,也可以有用作分隔的空白行。这样设计的信件便于进行语法分析,提取信件的基本信息。在RFC822中规定,信件体就是一系列的向收信人表达信息的文本行,比较简单,可以包含任意文本,并没有附加的结构。信件头则具有比较复杂的结构,在下一小节中详述。42信件的头部421信头的一般格式信头的结构比较复杂,信头由若干信头字段HEADERFIELD组成,这些字段为用户和程序提供了关于信件的信息。要了解信头的结构就要弄清楚各种信头字段。所有的信头字段都具有相同的语法结构,从逻辑上说,包括四部分,字段名FIELDNAME,紧跟冒号“COLON,后跟字段体FIELDBODY,最后以回车换行符CRLF终止。即信头字段字段名字段体CRLF字段名必须由除了冒号和空格以外的可打印USASCII字符其值在33和126之间组成,大多数字段的字段名称由一系列字母,数字组成,中间经常插9入横线符。字段名告诉电子邮件软件如何翻译该行中剩下的内容。字段体可以包括除了CR和LF之外的任何ASCII字符。但是其中的空格,加括号的注释,引号和多行字段都比较复杂,另外,字段体的语法和语义依赖于字段名,每个类型的字段有特定的格式。RFC822为信件定义了一些标准字段,并提供了用户自行定义非标准字段的方422结构化字段和非结构化字段每个字段所包含的信息不同,字段大体可以分为结构化字段和非结构化字段。结构化字段有特定的格式,由语法分析程序检测。SENDER字段就是一个很好的例子,它的字段内容是信箱,有一个离散的结构。非结构化的字段含有任意的数据,没有固定格式。例如,SUBJECT字段可以含有任意的文字,并且没有固定格式。非结构化的字段数量较少,只有SUBJECT、COMMENTS、扩展字段,非标准字段、INREPLY和REFERENCES等。所有其它字段都是结构化的。423信头字段的元素尽管EMAIL信件的总体结构非常简单,但一些信头字段的结构是很复杂的。下面介绍一些大多数字段共有的元素。(1)空白符像其它文本文件一样,空白符包括空格符ASCII码32和制表符TABASCII码19。此外,行末的回车换行符CRLF也应算是空白符。使用空白符可以对字段进行格式化,增加它的可读性。例如,每个字段间用CRLF来分离,在字段内用空格来分隔字段名和字段内容。在SUBJECT后面的冒号和内容之间插入空格字符,会使字段结构更加清晰。在EMAIL中,空白符的使用并没有固定的规则,但应当正确地使用,仅在需要时才使用空白符,以便接收软件进行语法分析。(2)注解注解是由括号括起来的一系列字符,例如,这份礼物。注解一般用在非结构化的信头字段中,没有语法语义,仅为人提供了一些附加的信息。如果在加引号的字符串中有包括在括号中的字符,那是字符串的一部分,不是注解。在解释信件的时候,会将注解忽略,可以用一个空格字符代替它们,这样就什么也不会破坏。(3)字段折叠每个信头字段从逻辑上说应当是一个由字段名、冒号、字段体和CRLF组成10的单一的行,但为了书写与显示的方便,增加可读性,也为了符合1000/80的行字符数的限制,可以将超过80个字符的信头字段分为多行,即对于比较长的字段,可以分割成几行,形成折叠。在结构化和非结构化字段中都允许折叠。通过在字段中某些点插入CRLF符和至少一个或多个空白字符来实现字段的折叠,第一行后面的行称为信头字段的续行。续行都以一个空白符开始,这种方法称为折叠(FOLDING),例如标题字段SUBJECTTHISISATEST可以表示为SUBJECTTHISISATEST反之,将一个被折叠成多行的信头字段恢复到它的单行表示的过程叫做去折叠,只要简单地移除后面跟着空格的CRLF,将折叠空白符CRLF转换成空格字符,就可以完成去折叠UNFOLDING。在分析被折叠的字段的语法时,要把一个多行的折叠字段展开为一行,根据它的非折叠的形式来分析它的语法与语义。(4)字段大小写字段名称是不区分大小写的,所以SUBJECT、SUBJECT或SUBJECT都一样。不过字段名称大小写有习惯的常用形式,如主题字段的大小写形式通常为SUBJECT。字段体的大小写稍微复杂点,要视情况而定。比如SUBJECT后面的字段体,其中的大写可能就是缩写的专用名词,不能改动。424标准的信头字段下面介绍RFC822中定义的常用的标准信头字段。表41RFC822常用的标准信头字段与发信方有关的信头字段格式FROMMAILBOX举例FROMWANG163COM写信人字段。说明信件的原始创建者,给出他的电子信箱地址。创建者对信件的原始内容负责。格式SENDERMAILBOX举例FROMWANG163COMSENDERLISINACOM发送者字段。说明实际提交发送这个信件的人,给出他的电子信箱地址。当发信人与写信人不一样时使用。比如,秘书替经理发信。发送者对发送负责。格式REPLYTOMAILBOX举例FROMWANG163COMFROMZHAOSOHOCOM回复字段。指定应当把回信发到哪里。如果有此字段,回信将会发给它指定的邮箱,而不会发给FROM字段指定的邮箱。比如,发送的是经理的信,但回信应交办公室处理。与收信方有关的信头字段格式TOMAILBOXLIST举例TOZHANG263COM收信人字段。指定主要收信人的邮箱地址,可以是多个邮箱地址的列表,地址中间用逗号隔开。格式CCMAILBOXLIST抄送字段。指定此信件要同时发给哪些人,也称为抄11举例CCZHANG863COM送。也可以使用邮箱地址列表,抄送给多个人。格式BCCMAILBOXLIST密抄字段。指定此信件要同时秘密发给哪些人,也称为密件抄送。也可以使用邮箱地址列表,密抄给多个人。其它的信头字段格式DATEDATETIME举例DATETUE,04DEC2004161808800日期字段DATE字段含有电子邮件创建的日期和时间。格式SUBJECTTEXT举例SUBJECTHELLOSUBJECTREHELLO信件主题字段。描述信件的主题。当回复信件时,通常在主题前面增加“RE”前缀,标记为该信件为回复信件当信件被转发时,通常在主题文字前面加上“FW”,“FWD”这样的前缀。格式RECEIVED“FROM“DOMAIN发送主机“BY“DOMAIN接收主机“VIA“ATOM物理路径“ID“MSGID接收者MSGID接受字段。是投递信件的特定邮件服务器所作的记录。处理邮件投递的每个服务器必须给它处理的每个信头的前面加一个RECEIVED字段,用以描述信件到达目的地所经过的路径以及相关信息。当跟踪各个电子邮件问题时,这个信息很有帮助。举例RECEIVEDFROMWANG195001BYLI129504TUEDEC2003121802800格式COMMENTSTEXT注释字段。用于把一个注解添加到信件中。格式RESENT举例RESENTFROMRESENTSENDERRESENTDATERESENTREPLYTO重发字段。当需要把收到的信件重发给另一组收信人的时候,可以保持整个原始信件不变,并简单地产生重发信件所要求的新信头字段。为避免与以前的字段相混。新添加的信头字段都加上RESENT前缀字符串,它们的语法与未加前缀的同名字段相同。格式MESSAGEIDMSGID信件标识字段。用于表示一个信件唯一标识,该字段通常有SMTP服务器生成,这个值通常是唯一的。形式根据使用的软件而定。通常左边是标识符,右边指定电脑名表41中的关键字表明了电子邮件借用了办公室备忘录中的概念和术语电子邮件的头部能够包含一行说明应当接收到该备忘录的接收方。象传统的办公室备忘录一样,电子邮件使用关键字CC指明一个复写副本CARBONCOPY电子邮件软件必须向CC后面的电子邮件地址表中的每个地址发送一份消息的副本。12传统的办公室过程要求备忘录的发送方通知接收方副本是否传给其它人。有时发送方希望将备忘录的一个副本给别人而不显示出有一个副本被发送出去。一些电子邮件系统提供这样的选项,遵循传统的办公室术语,用盲复写副本BLINDCARBONCOPY来表示。创建消息的用户在关键字BCC后给出一个电子邮件地址表,指定一个或多个盲复写副本。虽然BCC在发送方出现,但当信息发送时,邮件系统将它从消息中除去。每个接收方必须检查头部的TO和CC行以决定信息是直接发送还是作为盲副本发送的有些邮件系统在正文部分附加信息来告诉接收者它是一个盲副本。其它接收者不知道有哪些用户接收到盲副本。电子邮件使用与传统的办公室备忘录相同的格式和术语头部包括与消息有关的信息,正文包括消息文本。电子邮件头部的行说明发送方、接收方、日期、主题、应当收到副本的人的列表。(1)扩展字段如果想在信头中加入RFC822中没有规定的字段,就需要创建非标准字段。方法非常简单,只要在自定义的信头字段名的前面使用X前缀。RFC822将这种方法称为扩展字段。事实上已经有许多扩展字段被广泛应用,但没有标准定义。例如XLOOP字段XLOOP字段用来防止邮件的循环传送。过滤或邮件列表处理程序,可以给它处理的每个信件增加一个XLOOP字段,以后就可以根据这个字段中含有的特别值,判断一个信件是否被循环传送。如果确认邮件发生了循环,过滤或邮件列表处理程序就可以用不同的方式处理该信件。XMAILER字段XMAILER字段用于指示什么样的程序产生了这个信件,它是使用最广泛的扩展字段。产生邮件的软件可以为所有发送的信件增加合适的XMAILER字段,该字段不仅含有软件的名称,还包含软件的版本号。2普通关键字下表42列出了一些在因特网电子邮件中可以找到的普通关键字,以及它们的含义。表42电子邮件中的普通关键字关键字含义FROM发送方地址TO接收方地址13CC复制副本地址DATE信息创建日期SUBJECT信息主题REPLYTO回复地址XCHARSET使用的字符集(通常为ASCII)XMAILER发送信息所使用的软件XSENDER发送方地址的副本XFACE经编码的发送方面孔的图象145重要模块设计51用户登录模块511主要函数说明邮件收发管理系统的用户登录页面与普通页面的实现方法不同,首先需要通过IMAP_OPEN函数建立与POP3服务器的连接,然后对用户接受的邮箱信息进行判断。如果用户成功登录,则使用IMAP_CLOSE函数关闭与POP3服务器的连接,并指定到指定的页面。下面对用户登录信息处理页面中所使用的关键函数进行介绍。1)IMAP_OPENIMAP_OPEN函数用于建立与POP3服务器的连接。语法RESOURCEIMAP_OPENSTRINGMAILBOX,STRINGUSERNAME,STRINGPASSWORD,INTOPTIONS,INTN_TETRIES。IMAP_OPEN函数的参数说明如表51所示表51IMAP_OPEN参数说明参数说明MAIBOX必选参数。服务器地址USERNAME必选参数。用户帐号PASSWORD必选参数。用户密码OPTIONS可选参数。该参数取值及说明如表52INTN_RETRIES可选参数。试图与IMAP服务器建立连接的最大连接数表52OPTIONS参数取值及说明参数取值说明OP_READONLY打开连接使用只读状态OP_ANONYMOUS匿名读取NNTP服务器,不使用NEWSRC文件OP_HALFOPEN只与IMAP或NNTP服务器连接,不打开邮箱OP_EXPUNGE关闭连接时自动清除邮箱中的信件2)IMAP_CLOSEIMAP_CLOSE函数用于关闭与POP3服务器的连接。语法BOOLIMAP_CLOSERESOURCEIMAP_STREAM,INTFLAGIMAP_CLOSE函数的参数说明如表53所示。图53IMAP_CLOSE参数说明参数说明IMAP_STREAM必选参数。IMAP_OPEN函数与服务器成功建立连接后所返回的连接标识FLAG可选参数。如果将该参数设置为CL_EXPUNGE,则在断开与服务15器的连接的同时删除所有带有连接标记的邮件512部分主要代码处理用户登录信息的页面代码如下ALERT请通过正确的途径重新本系统HISTORYBACK“EXITID_GETIDOBJIMAP_HEADERMBOX,ID52发送带附件邮件模块发送带附件的EMAIL页面首先对接收用户发送的收件人、邮件主题、附件、邮件内容等信息,并获取附件的文件类型、大小等属性,然后应用IMAP_MAIL_COMPOSE函数创建MIME邮件,最后应用IMAP_MAIL函数将邮件发送到POP3服务器的”MAILROOTMAILBOX”目录下对应的邮箱内,下面对发送带附件的EMAIL信息处理页面中所使用的关键函数进行介绍。521关键函数1)IMAP_MAIL_COMPOSE函数创建一个MIME邮件语法STRINGIMAP_MAIL_COMPOSEARRAYENVELOPE,ARRAYBODYIMAP_MAIL_COMPOSE函数的参数说明如表54所示。表54IMAP_MAIL_COMPOSE参数说明参数说明ENVELOPE必选参数。由与邮件地址有关的首部信息组成,包括FROM,REPLY_TO,CC,BCC,SUBJECT等项BODY必选参数。由具体的邮件以及与其格式有关的各种属性组成162)IMAP_MAIL函数发送邮件函数语法BOOLIMAP_MAILSTRINGTO,STRINGSUBJECT,STRINGMESSAGE,STRINGADDITIONAL_HEADERS,STRINGCC,STRINGBCC,STRINGRPATH其各种参数如下表55所示表55IMAP_MAIL参数说明参数说明TO必选参数。收件人地址SUBJECT必选参数。邮件主题MESSAGE必选参数。邮件内容ADDITIONAL_HEADERS可选参数。邮件额外首部信息CC可选参数。抄送人地址BCC可选参数。密送人地址RPATH可选参数。用于设置RETURNPATH首部522部分主要代码数据处理页SENDPHP的代码如下ALERT邮件发送成功HISTORYBACK“ELSEECHO“ALERT邮件发送失败HISTORYBACK“53收邮件模块收邮件是邮件收发系统重要的功能之一,该页面通过分页形式显示邮件信息。下面对收邮件页面中所使用的关键函数进行介绍。18531主要函数说明1)IMAP_CHECK函数IMAP_CHECK函数用于获取连接ID,并返回包含当前邮箱信息的对象。语法OBJECTIMAP_CHECKRESOURCEIMAP_STREAM参数IMAP_STREAM为IMAP_OPEN函数成功连接上邮件服务器后所返回的连接标识。该函数返回对象可以调用的属性说明如表56所示。表56IMAP_CHECK函数返回对象可调用的属性说明属性名说明DATE根据RFC2822时间格式所返回的系统当前时间DRIVER返回邮箱所使用协议的名称,包括POP3,IMAP和NNTPMAILBOX返回邮箱的名称NMSGS返回邮箱中邮件的个数RECENT返回最近收到邮件的数目2)IMAP_SEARCHIMAP_SEARCH函数用于搜寻指定标准的信件。语法ARRAYIMAP_SEARCHRESOURCEIMAP_STREAM,STRINGCRITERIAL,INTOPTIONS,STRINGCHARSETIMAP_SEARCH函数的参数说明如表57所示。表57IMAP_SEARCH函数的参数说明参数说明IMAP_STREAM必选参数。IMAP_OPEN函数与服务器成功建立连接后所返回的连接标识CRITERIA必选参数。指定查询的条件OPTIONS必选参数。为SE_UID值CHARSET可选参数。指定邮件所采用的字符集532部分主要代码输出邮件的相关属性,并在每封邮件前添加一个复选框,用来删除邮件的信息,代码如下NMSGSPRINT_RIMAP_SEARCHMBOX,“SEEN“IFSUM暂无邮件54查看邮件模块541主要函数说明20查看邮件功能是建立在收件箱或查找邮件的基础上实现的,该页面供用户浏览邮件资源,同时支持附件下载功能。下面对查看邮件页面中所使用的关键函数进行介绍。1)IMAP_HEADERS函数IMAP_HEADERS函数用于获取全部信件的标头信息。语法ARRAYIMAP_HEADERSRESOURCEIMAP_STREAM参数IMAP_STREAM为IMAP_OPEN函数成功连接上IMAP服务器的返回值。2)IMAP_BODY函数IMAP_BODY函数用于获取指定邮件的内容。语法STRINGIMAP_BODYRESOURCEIMAP_STREAM,INTMSG_NUMBER,INTOPTIONSIMAP_BODY函数的参数说明如表58所示。表58IMAP_BODY函数的参数说明参数说明IMAP_STREAM必选参数。IMAP_OPEN函数返回的IMAP标识MSG_NUMBER必选参数。邮件号OPTIONS可选参数。该参数的详细说明如表59所示表59OPTIONS参数值的说明参数值说明FT_UID指定邮件号为UID形式FT_PEEK如果已经设置了SEEN标记,则取消对该标记的设置FT_INTERNAL指定返回字符串的格式采用国际标准,而不采用CRLF标准3)IMAP_FETCHBODY函数IMAP_FETCHBODY函数用于获取指定邮件的指定部分内容。语法STRINGIMAP_FETCHBODYRESOURCEIMAP_STREAM,INTMSG_NUMBER,STRINGPART_NUMBER,INTOPTIONSIMAP_FETCHBODY函数的参数说明如表510所示。表510IMAP_FETCHBODY函数的参数说明参数说明IMAP_STREAM必选参数。IMAP_OPEN函数与服务器成功建立连接后所返回的连接标识MSG_NUMBER必选参数。邮件号PART_NUMBER必选参数。指定邮件部分号OPTIONS可选参数。该参数的详细说明参见表59214)IMAP_FETCHSTRUCTURE函数IMAP_FETCHSTRUCTURE函数用于获取的结构语法OBJECTIMAP_FETCHSTRUCTURERESOURCEIMAP_STREAM,INTMSG_NUMBER,INTOPTIONSIMAP_FETCHSTRUCTURE函数的参数说明如表511所示。表511IMAP_FETCHSTRUCTURE函数的参数说明参数说明IMAP_STREAM必选参数。IMAP_OPEN函数与服务器成功建立连接后所返回的连接标识MSG_NUMBER必选参数。邮件号OPTIONS可选参数。该参数的详细说明请参见表595)IMAP_BASE64函数IMAP_BASE64函数用于对已经进行BASE64编码的文件进行解码。语法STRINGIMAP_BASE64STRINGTEXT参数TEXT为已经进行BASE64编码的文本。542部分主要代码显示附件名称的代码如下PARTSIFARRAY1DPARAMETERS0VALUE“FILENAMEARRAY1DPARAMETERS0VALUEELSEFILENAMEARRAY1DESCRIPTIONIFSTRTOLOWERSUBSTRFILENAME,0,10STRTOLOWER“GB2312B“ECHOBASE64_DECODESUBSTRFILENAME,11,STRLENFILENAME13ELSEECHOFILENAME下载附件页面的处理页DOWNPHP的关键代码如下22ALERT请通过正确的途径重新本系统HISTORYBACK“EXITSTRUCTUREIMAP_FETCHSTRUCTUREMBOX,IDARRAYSTRUCTUREPARTSIFARRAY1DPARAMETERS0VALUE“FILENAMEARRAY1DPARAMETERS0VALUEELSEFILENAMEARRAY1DESCRIPTIONIFSTRTOLOWERSUBSTRFILENAME,0,10STRTOLOWER“GB2312B“FILENAMEBASE64_DECODESUBSTRFILENAME,11,STRLENFILENAME13HEADER“CONTENTTYPEAPPLICATION/OCTETSTREAM“HEADER“ACCEPTRANGESBYTES“HEADER“ACCEPTLENGTH100“HEADER“CONTENTDISPOSITIONATTACHMENTFILENAME“FILENAME“TEXTIMAP_FETCHBODYMBOX,ID,2ECHOIMAP_BASE64TEXTIMAP_CLOSEMBOXEXIT236软件运行

温馨提示

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

评论

0/150

提交评论