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

下载本文档

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

文档简介

1、本科毕业论文说明书电子邮件收发系统的设计MANAGEMENT SYSTEMS TO SEND AND RECEIVEE-MAIL学院(部):计算机科学与工程学院专业班级:信息安全05-2学生姓名:QQ49765400指导教师:2009年6月2日电子邮件收发系统的设计摘要电子邮件在当今社会中扮演了一个很重要的角色。越来越多的人在使用它。而且用 它的人数势必会继续增加。虽然,现在已经有很多的邮件收发软件,但是对于大多数的 非专业的人来说它还是有点难度稍嫌复杂。因此,我们就利用SMTP和POP3协议从底 层开发了这个软件。SMTP全称是简单邮件传输协议,它专门用来发送邮件用。POP全 称是邮局协议,

2、是专门用于接收邮件。本次设计就是利用PHP+Apache这一黄金组合来 实现一个邮件收发管理系统,使用此系统,你既可以用它发送一个纯文本邮件,也可以 发送一个带有附件的邮件,理所当然地,你也可以使用不同的SMTP服务器。经过测试, 证实此软件是一个支持纯文本,或者带附件的邮件发送软件。关键词:SMTP, POP3,邮件发送,附件MANAGEMENT SYSTEMS TO SEND AND RECEIVE E-MAILABSTRACTE-mail in todays society plays a very important role. More and more people use it.

3、 And the number of people using it will certainly continue to increase. Although, there are a lot of software to send and receive mail, but most of the non-professional people it is responsible for a little bit more difficult. Therefore, we will make use of SMTP and POP3 protocol developed from the

4、bottom of this software. The full name of the SMTP Simple Mail Transfer Protocol, is used to send e-mail. POP Post Office Protocol is the full name is dedicated to receiving mail. The design is to use PHP+Apache in this gold to achieve a portfolio management system to send and receive e-mail, the us

5、e of this system, you can use it to send a plain text message, you can send an e-mail with attachments, of course, You can also use a different SMTP server. Tested to confirm this software is a support for plain text, or e-mail with attachments software.KEYWORDS: smtp, pop3, e-mail, attachment目录 TOC

6、 o 1-5 h z 摘要I HYPERLINK l bookmark10 o Current Document ABSTRACTII HYPERLINK l bookmark57 o Current Document 1引言1 HYPERLINK l bookmark60 o Current Document 1电子邮件介绍1 HYPERLINK l bookmark67 o Current Document 2开发背景23开发环境及运行环境23. 1开发环境23. 2 运行环境2 HYPERLINK l bookmark74 o Current Document 2软件架构及系统用例图31

7、系统架构32系统总体用例33程序功能框图3 HYPERLINK l bookmark77 o Current Document 4发送邮件函数4 HYPERLINK l bookmark81 o Current Document 5接收邮件函数4 HYPERLINK l bookmark84 o Current Document SMTP和POP3协议的研究51SMTP协议简介及工作原理51. 1 SMTP 简介51. 2 SMTP协议的命令51. 3 SMTP的工作原理52 POP3协议介绍和工作原理62. 1 POP3简介与命令62. 2 POP工作原理简介7 HYPERLINK l bo

8、okmark95 o Current Document RFC822(ARPA因特网文本信件格式的标准)81RFC822简单介绍82信件的头部82. 1 信头的一般格式8 HYPERLINK l bookmark104 o Current Document 2. 2结构化字段和非结构化字段9 HYPERLINK l bookmark108 o Current Document 2. 3信头字段的元素9 HYPERLINK l bookmark116 o Current Document 2. 4标准的信头字段10 HYPERLINK l bookmark121 o Current Docume

9、nt 5重要模块设计141用户登录模块14 HYPERLINK l bookmark149 o Current Document 1. 1主要函数说明14 HYPERLINK l bookmark130 o Current Document 1. 2部分主要代码15 HYPERLINK l bookmark133 o Current Document 2发送带附件邮件模块15 HYPERLINK l bookmark137 o Current Document 2. 1关键函数15 HYPERLINK l bookmark143 o Current Document 2. 2部分主要代码16

10、HYPERLINK l bookmark146 o Current Document 3收邮件模块175. 3. 1主要函数说明18 HYPERLINK l bookmark152 o Current Document 3. 2部分主要代码185.4查看邮件模块205.4.1主要函数说明: 205.4.2部分主要代码216软件运行时的界面24 HYPERLINK l bookmark164 o Current Document 1登录邮件服务器246.2 发送邮件界面 24 HYPERLINK l bookmark167 o Current Document 2. 1发送不带附件的邮件256.

11、2.2 发送带附件的邮件 25 HYPERLINK l bookmark175 o Current Document 3查找邮件模块26 HYPERLINK l bookmark179 o Current Document 系统测试271同一 SMTP服务器发送邮件的测试27 HYPERLINK l bookmark182 o Current Document 1. 1发送一封文本邮件给一个收信人27 HYPERLINK l bookmark186 o Current Document 1. 2发送一封带附件的邮件给一个收件人277. 2利用不同的SMTP服务器发送邮件的测试28 HYPERL

12、INK l bookmark190 o Current Document 结论29参考文献30 HYPERLINK l bookmark203 o Current Document 致谢31 HYPERLINK l bookmark206 o Current Document 附录A31 HYPERLINK l bookmark209 o Current Document 附录B321引言1电子邮件介绍电子邮件(简称E-mail)又称电子信箱、电子邮政,它是一种用电子手段提供 信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互 式的通信,加速了信息的交流及数据传送,它是一个

13、简易、快速的方法。通过连接 全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的 各个角落。到目前为止,可以说电子邮件是Internet资源使用最多的一种服务, E-mail不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类 型的信息。电子邮件不是一种“终端到终端”的服务,是被称为“存贮转发式”服务。 这正是电子信箱系统的核心,利用存贮转发可进行非实时通信,属异步通信方式。 即信件发送者可随时随地发送邮件,不要求接收者同时在场,即使对方现在不在, 仍可将邮件立刻送到对方的信箱内,且存储在对方的电子邮箱中。接收者可在他 认为方便的时候读取信件,不受时空限

14、制。在这里,“发送”邮件意味着将邮件放 到收件人的信箱中,而“接收”邮件则意味着从自己的信箱中读取信件,信箱实际 上是由文件管理系统支持的一个实体。因为电子邮件是通过邮件服务器(mailserver)来传递档的。通常mail server是执行多任务操作系统UNIX的计算机, 它提供24小时的电子邮件服务,用户只要向mail server管理人员申请一个信箱 账号,就可使用这项快速的邮件服务。电子邮件的工作原理:电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的 产物。电子邮件的传输是通过电子邮件简单传输协议(Simple Mail TransferProtocol,简称SMTP)

15、这一系统软件来完成的,它是Internet下的一种电子邮件通 信协议。电子邮件的基本原理,是在通信网上设立“电子信箱系统”,它实际上是 一个计算机系统。系统的硬件是一个高性能、大容量的计算机。硬盘作为信箱的 存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱”,每位用户都有 属于自己的一个电子信箱。并确定一个用户名和用户可以自己随意修改的口令。 存储空间包含存放所收信件、编辑信件以及信件存盘三部分空间,用户使用口令 开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作。系统功能 主要由软件实现。电子邮件的通信是在信箱之间进行的。用户首先开启自己的信箱,然后 通过键入命令的方式将需

16、要发送的邮件发到对方的信箱中。邮件在信箱之间进行 传递和交换,也可以与另一个邮件系统进行传递和交换。收方在取信时,使用特 定账号从信箱提取。1. 2开发背景当前流行的各大邮件客户端软件的除了最主要的收发信件之外,功能越来越 复杂,但是人们平常真正用到的功能很少,很多功能尤其对于那些计算机知识相 对缺乏的人来说,更加显得太过于华丽而不太实用。有鉴于此,在了解RFC底层 协议的基础上,我们开发了这个各种功能相对简单实用的邮件客户端程序,简化 了很多不必要的功能。1. 3开发环境及运行环境1. 3. 1开发环境Intel Core Duo T2050,2G 内存,320G 硬盘Microsoft W

17、indows 2003 企业版IIS6.0(SMTP)+POP3 服务器,IP 地址为 6Macromedia Dreamweaver 8Apache+PHP1.3.2 运行环境Intel Pentium 2及以上处理器,32M以上内存,4G以上硬盘Microsoft Windows XP/NT 操作系统800*600或以上的屏幕分辨率IE6.0或者其他浏览器2软件架构及系统用例图2. 1系统架构软件的总体架构如图2-1:图2-1软件架构图2. 2系统总体用例2. 3程序功能框图图2-3程序功能图4发送邮件函数是发送邮件的核心,函数名为imap_mail()。封装了发送邮件的具体实现方 法,也

18、是具体的RFC用代码实现的过程。2. 5接收邮件函数收邮件是邮件收发系统重要的功能之一,主要利用imap_check()和 imap_search()两个函数,其中 object imap_check(resource imap_stream)函数 用于获取连接id,并返回包含当前邮箱信息的对象,参数 imap_stream为 imap_open()函数成功连接上邮件服务器后所返回的连接标识。imap_search()函 数用于搜寻指定标准的信件。3 SMTP和POP3协议的研究由于要开发的是邮件收发系统,就不得不用到SMTP协议和POP协议而其中 最重要的要是SMTP(Simple Mail

19、 Transfer Protocol)协议。SMTP被用来在因 特网上发送邮件,该协议规定了一些基本的命令和方法使客户端与服务器进行交 互,以达到发送邮件的目的。3. 1 SMTP协议简介及工作原理1. 1 SMTP 简介SMTP是Simple Mail Transfer Protocol的缩写,即简单邮件传送协议。使 用SMTP虚拟服务器可以实现邮件的发送和接收,它提供客户端向服务器端发送 邮件的功能,即客户端向服务器发出请求指令,服务器端则给出应答。其优点是 速度快、可靠性高,易于操作。SMTP邮件信息为纯文本格式。文本中包含格式信息,如HTML以及客户使用 指定在信息中的MIME类型,以

20、便用合适的方式显示邮件。如果邮件中包含附件, 则通过SMTP自动转变成合适的文本类型。3. 1. 2 SMTP协议的命令SMTP分为命令头和信息头两部分,命令头主要完成客户端与服务器端的连 接、验证等,整个过程由多条命令组成。由服务器给出的相应信息一般为3位数 字的相应码和相应文本,不同的服务器回送相应码是遵守该协议的,而相应正文 则不必。SMTP命令及相应信息够是单行的,信息体则是邮件正文部分,最后应以 单独的”.”作为结束行。下面是客户端一些常用的SMTP指令。HELLO hostname:与服务器连接并告知客户端使用的机器名,可以随便 写。MAIL FROM: sender_id:告诉服

21、务器发信人的地址。RCPT TO: receiver_id:告诉服务器收信人地址。DATA:传输信件内容,且最后要以只含”.”的特殊行结束。RESET :取消刚才的指令,重新开始。VERIFY userid:校验帐号是否存在(此指令为可选指令,服务器可能不 支持)。QUIT:退出连接。3. 1. 3 SMTP的工作原理SMTP通常有两种工作模式:发送SMTP和接收SMTP。具体工作方式为:发送 SMTP在接到用户的邮件请求后,判断此邮件是否为本地邮件,若是直接投送到用 户的邮箱,否则向DNS查询远端邮件服务器的MX纪录,并建立与远端接收SMTP 之间的一个双向传送通道,此后SMTP命令由发送S

22、MTP发出,由接收SMTP接收, 而应答则反方面传送。一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件 发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT 命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接 收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此重复多次。 当接收者收到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,则 返回OK应答。3. 2 POP3协议介绍和工作原理3. 2. 1 POP3简介与命令POP即为Post Office Protocol的简称,是一种电子邮局传输协议,而 POP3是它的

23、第三个版本,是规定了怎样将个人计算机连接到Internet的邮件 服务器和下载电子邮件的电子协议。它是Internet电子邮件的第一个离线协议 标准。简单点说,POP3就是一个简单而实用的邮件信息传输协议。POP协议允许工作站动态访问服务器上的邮件,目前已发展到第三版,称为 POP3。POP3允许工作站检索邮件服务器上的邮件。POP3传输的是数据消息,这 些消息可以是指令,也可以是应答。创建一个分布式电子邮件系统有多种不同的技术支持和途径,诸如:POP(邮 局协议)、DMSP (分层式电子邮件系统协议)和IMAP (因特网信息访问协议)。 其中,POP协议创建最早因此也最为人们了解;DMSP具

24、有较好的支持“无连接” 操作的性能,但其很大程度上仅限于单个应用程序(PCMAIL); IMAP提供了 POP 和DMSP的扩展集并提供对远程邮件访问的三种支持方式:离线、在线和无连 接。POP协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电 子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮 件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终 端机器上,一般是PC机或MAC。一旦邮件发送到PC机或MAC上,邮件服务 器上的邮件将会被删除。POP3并不支持对服务器上邮件进行扩展操作,此过程由更高级的IMAP4完 成。POP3使用TCP作为传输

25、协议。通过POP,客户登录到服务器后,可以对自己的邮件进行删除,或是下载到本地。POP3的常用命令如表3-1所示。表3-1 POP3常用命令命令参数状态描述USERUsername认可此命令与下面的pass命令如果都发送成功,则将使状态转 换PASSPassword认可向POP3服务器发送指定邮箱的登录密码,进行密码验证APOPName,Digest认可Digest是MD5消息摘要STATNone处理请求服务器发回关于邮箱统计资料(邮箱总数和总字节数)UIDLMsg#处理回送邮件唯一标识符LISTMsg#处理回送邮件数量和每个邮件的大小RETRMsg#处理回送由参数标识的邮件的全部文本DELE

26、Msg#处理服务器将由参数标识的邮件标记为删除,由QUIT命令执行RSETNone处理服务器将重置所有标记为删除的邮件,用于撤销DELE命令TOPMsg#处理服务器将回送由参数标识的邮件前n行内容,n是正整数NOOPNone处理服务器返回一个肯定的相应,不做任何操作QUITNone更新断开与POP3的连接,同时将带有删除标记的邮件进行物理 删除3. 2. 2 POP工作原理简介下面就让我们一起来看看电子邮件软件收取电子邮件的过程,一般我们在电 子邮件软件的账号属性上设置一个POP服务器的URL(比如),以及 邮箱的账号和密码。这个在收信过程中都是用得到的。当我们按下电子邮件软件 中的收取键后,

27、电子邮件软件首先会调用DNS协议对POP服务器进行解析IP地 址,当IP地址被解析出来后,邮件程序便开始使用TCP协议连接邮件服务器的 110端口,因为POP服务器是比较忙的,所以在这个过程中我们相对要等比较长 的时间。当邮件程序成功地连上POP服务器后,其先会使用USER命令将邮箱的 账号传给POP服务器,然后再使用PASS命令将邮箱的账号传给服务器,当完成 这一认证过程后,邮件程序使用STAT命令请求服务器返回邮箱的统计资料,比 如邮件总数和邮件大小等,然后LIST便会列出服务器里邮件数量。然后邮件程 序就会使用RETR命令接收邮件,接收一封后便使用DELE命令将邮件服务器中的 邮件置为删

28、除状态。当使用QUIT时,邮件服务器便会将置为删除标志的邮件给 删了。通俗地讲,邮件程序从服务器接收邮件,其实就是一个对话过程,POP协 议就是用于电子邮件的一门语言。4 RFC822(ARPA因特网文本信件格式的标准)说道发送和接受邮件,我们就必须不得不提RFC822 了 RFC822的全称是“ARPA 因特网文本信件格式的标准”(Standard for the Format of ARPA Internet Text Messages) o该标准提供了邮件内容的格式和相关语义。1 RFC822简单介绍RFC822规定的电子邮件内容全部由ASCII字符组成,就是通常所说的文本文 件,因而标

29、准将它称为Internet文本信件(Internet Text Messages) o从直观上看,信件非常简单,就是一系列由ASCII字符组成的文本行,每一 行以回车换行符(CRLF ,就是ASCII码的13和10)结束。从组织上看,信件内容结构分为两大部分,中间用一个空白行(只有CRLF符 的行)来分隔。第一部分称为信件的头部(the header of the message),包括有 关发送方、接收方、发送日期等信息。第二部分称为信件的体部(Body of the message),包括信件内容的正文文本。信头是必需的,信体是可选的,即信体可 有可无。如果不存在信体,用作分隔的空白行也就

30、不需要。在信体中,也可以有 用作分隔的空白行。这样设计的信件便于进行语法分析,提取信件的基本信息。在RFC822中规定,信件体就是一系列的向收信人表达信息的文本行,比较 简单,可以包含任意文本,并没有附加的结构。信件头则具有比较复杂的结构, 在下一小节中详述。2信件的头部4. 2. 1信头的一般格式信头的结构比较复杂,信头由若干信头字段(header field)组成,这些字段 为用户和程序提供了关于信件的信息。要了解信头的结构就要弄清楚各种信头字 段。所有的信头字段都具有相同的语法结构,从逻辑上说,包括四部分,字段名 (field name),紧跟冒号:(colon),后跟字段体(field

31、 body),最后以回车 换行符(CRLF)终止。即信头字段二字段名:字段体CRLF字段名必须由除了冒号和空格以外的可打印USASCII字符(其值在33和 126之间)组成,大多数字段的字段名称由一系列字母,数字组成,中间经常插入 横线符。字段名告诉电子邮件软件如何翻译该行中剩下的内容。字段体可以包括除了 CR和LF之外的任何ASCII字符。但是其中的空格,加括号 的注释,引号和多行字段都比较复杂,另外,字段体的语法和语义依赖于字段名, 每个类型的字段有特定的格式。RFC822为信件定义了一些标准字段,并提供了用 户自行定义非标准字段的方2. 2结构化字段和非结构化字段每个字段所包含的信息不同

32、,字段大体可以分为结构化字段和非结构化字 段。结构化字段有特定的格式,由语法分析程序检测。Sender字段就是一个很 好的例子,它的字段内容是信箱,有一个离散的结构。非结构化的字段含有任意的数据,没有固定格式。例如,Subject字段可以 含有任意的文字,并且没有固定格式。非结构化的字段数量较少,只有Subject. Comments、扩展字段,非标准字段、INReply和References等。所有其它字段 都是结构化的。2. 3信头字段的元素尽管Email信件的总体结构非常简单,但一些信头字段的结构是很复杂的。 下面介绍一些大多数字段共有的元素。空白符像其它文本文件一样,空白符包括空格符(

33、ASCII码32)和制表符Tab(ASCII 码19)。此外,行末的回车换行符CRLF也应算是空白符。使用空白符可以对字段 进行格式化,增加它的可读性。例如,每个字段间用CRLF来分离,在字段内用 空格来分隔字段名和字段内容。在Subject后面的冒号和内容之间插入空格字符, 会使字段结构更加清晰。在Email中,空白符的使用并没有固定的规则,但应当 正确地使用,仅在需要时才使用空白符,以便接收软件进行语法分析。注解注解是由括号括起来的一系列字符,例如,(这份礼物)。注解一般用在非结 构化的信头字段中,没有语法语义,仅为人提供了一些附加的信息。如果在加引 号的字符串中有包括在括号中的字符,那是

34、字符串的一部分,不是注解。在解释 信件的时候,会将注解忽略,可以用一个空格字符代替它们,这样就什么也不会 破坏。字段折叠每个信头字段从逻辑上说应当是一个由字段名、冒号、字段体和CRLF组成 的单一的行,但为了书写与显示的方便,增加可读性,也为了符合1000/80的行 字符数的限制,可以将超过80个字符的信头字段分为多行,即对于比较长的字 段,可以分割成几行,形成折叠。在结构化和非结构化字段中都允许折叠。通过 在字段中某些点插入CRLF符和至少一个或多个空白字符来实现字段的折叠,第 一行后面的行称为信头字段的续行。续行都以一个空白符开始,这种方法称为折 叠(folding),例如标题字段 Sub

35、ject: This is a test 可以表示为:Subject: This is a test反之,将一个被折叠成多行的信头字段恢复到它的单行表示的过程叫做去折 叠,只要简单地移除后面跟着空格的CRLF,将折叠空白符CRLF转换成空格字符, 就可以完成去折叠(unfolding) o在分析被折叠的字段的语法时,要把一个多行 的折叠字段展开为一行,根据它的非折叠的形式来分析它的语法与语义。(4)字段大小写字段名称是不区分大小写的,所以Subject、subject或SUBJECT都一样。不过字段名称大小写有习惯的常用形式,如主题字段的大小写形式通常为 Subject。字段体的大小写稍微复杂

36、点,要视情况而定。比如Subject后面的字 段体,其中的大写可能就是缩写的专用名词,不能改动。4. 2. 4标准的信头字段下面介绍RFC822中定义的常用的标准信头字段。表4-1 RFC822常用的标准信头字段与发信方有关的信头字段格式:From: mailbox 举例:From: HYPERLINK mailto: 写信人字段。说明信件的原始创建者,给出他的电子信 箱地址。创建者对信件的原始内容负责。格式:Sender: mailbox 举例:From: HYPERLINK mailto: Sender: HYPERLINK mailto:li li发送者字段。说明实际提交发送这个信件的人

37、,给出他 的电子信箱地址。当发信人与写信人不一样时使用。比 如,秘书替经理发信。发送者对发送负责。格式:Reply-TO: mailbox举例:From: HYPERLINK mailto: From: HYPERLINK mailto:zhao zhao回复字段。指定应当把回信发到哪里。如果有此字段, 回信将会发给它指定的邮箱,而不会发给From字段指定 的邮箱。比如,发送的是经理的信,但回信应交办公室处理。与收信方有关的信头字段格式:TO: mailbox list 举例:TO: HYPERLINK mailto: 收信人字段。指定主要收信人的邮箱地址,可以是多个 邮箱地址的列表,地址中间

38、用逗号隔开。格式:Cc: mailbox list 举例:Cc: HYPERLINK mailto: 抄送字段。指定此信件要同时发给哪些人,也称为抄送。也可以使用邮箱地址列表,抄送给多个人。格式:Bcc: mailbox list密抄字段。指定此信件要同时秘密发给哪些人,也称为 密件抄送。也可以使用邮箱地址列表,密抄给多个人。其它的信头字段格式:Date: date-time举例:Date: Tue,04 Dec 2004 16:18:08 +800日期字段:Date字段含有电子邮件创建的日期和时间。格式:Subject: *text举例:Subject: Hello!Subject: Re:

39、Hello!信件主题字段。描述信件的主题。当回复信件时,通常 在主题前面增加“Re:”前缀,标记为该信件为回复信 件:当信件被转发时,通常在主题文字前面加上“Fw:”,“Fwd:”这样的前缀。格 式: Received : fromdomain;发送主机by domain;接收主机via atom;物理路径id msg-id;接收者 msg id接受字段。是投递信件的特定邮件服务器所作的记录。 处理邮件投递的每个服务器必须给它处理的每个信头 的前面加一个Received字段,用以描述信件到达目的 地所经过的路径以及相关信息。当跟踪各个电子邮件问 题时,这个信息很有帮助。举例:Received:

40、fromwang by li Tue dec 2003 12:18:02 +800格式:Comments: *text注释字段。用于把一个注解添加到信件中。格式:Resent-*举例:Resent-FromResent-SenderResent-dateResent-Reply-To重发字段。当需要把收到的信件重发给另一组收信人的 时候,可以保持整个原始信件不变,并简单地产生重发 信件所要求的新信头字段。为避免与以前的字段相混。 新添加的信头字段都加上Resent前缀子符串,它们的语法与未加前缀的同名字段相同。格式:Message-ID: msg-id信件标识字段。用于表示一个信件唯一标识,该

41、字段通 常有Smtp服务器生成,这个值通常是唯一的。形式根据 使用的软件而定。通常左边是标识符,右边指定电脑名表4-1中的关键字表明了电子邮件借用了办公室备忘录中的概念和术语:电 子邮件的头部能够包含一行说明应当接收到该备忘录的接收方。象传统的办公室 备忘录一样,电子邮件使用关键字Cc指明一个复写副本(carbon copy).电子邮 件软件必须向Cc:后面的电子邮件地址表中的每个地址发送一份消息的副本。传统的办公室过程要求备忘录的发送方通知接收方副本是否传给其它人。有 时发送方希望将备忘录的一个副本给别人而不显示出有一个副本被发送出去。一 些电子邮件系统提供这样的选项,遵循传统的办公室术语,

42、用盲复写副本(blind carbon copy)来表示。创建消息的用户在关键字Bcc后给出一个电子邮件地址表,指定一个或多个盲复写副本。虽 然Bcc在发送方出现,但当信息发送时,邮件系统将它从消息中除去。每个接收 方必须检查头部的To和Cc行以决定信息是直接发送还是作为盲副本发送的(有 些邮件系统在正文部分附加信息来告诉接收者它是一个盲副本)。其它接收者不 知道有哪些用户接收到盲副本。电子邮件使用与传统的办公室备忘录相同的格式和术语:头部包括与消息有 关的信息,正文包括消息文本。电子邮件头部的行说明发送方、接收方、日期、 主题、应当收到副本的人的列表。(1)扩展字段如果想在信头中加入RFC8

43、22中没有规定的字段,就需要创建非标准字段。 方法非常简单,只要在自定义的信头字段名的前面使用X-前缀。RFC822将这种 方法称为扩展字段。事实上已经有许多扩展字段被广泛应用,但没有标准定义。 例如:X-LOOP 字段X-LOOP字段用来防止邮件的循环传送。过滤或邮件列表处理程序,可以给它 处理的每个信件增加一个X-LOOP字段,以后就可以根据这个字段中含有的特别 值,判断一个信件是否被循环传送。如果确认邮件发生了循环,过滤或邮件列表 处理程序就可以用不同的方式处理该信件。X-Mailer 字段X-Mailer字段用于指示什么样的程序产生了这个信件,它是使用最广泛的扩 展字段。产生邮件的软件

44、可以为所有发送的信件增加合适的X-Mailer字段,该 字段不仅含有软件的名称,还包含软件的版本号。(2)普通关键字下表4-2列出了一些在因特网电子邮件中可以找到的普通关键字,以及它们 的含义。表4-2电子邮件中的普通关键字关键字含义From发送方地址To接收方地址Cc复制副本地址Date信息创建日期Subject信息主题Reply-To回复地址X-Charset使用的字符集(通常为ASCII)X-Mailer发送信息所使用的软件X-Sender发送方地址的副本X-Face经编码的发送方面孔的图象5重要模块设计1用户登录模块1. 1主要函数说明邮件收发管理系统的用户登录页面与普通页面的实现方法

45、不同,首先需要通 过imap_open()函数建立与POP3服务器的连接,然后对用户接受的邮箱信息进行 判断。如果用户成功登录,贝U使用imap_close()函数关闭与POP3服务器的连接, 并指定到指定的页面。下面对用户登录信息处理页面中所使用的关键函数进行介 绍。1)imap_open()imap_open()函数用于建立与POP3服务器的连接。语法: resource imap_open(string mailbox,string username,string password,int options,int n_tetries) oimap_open()函数的参数说明如表5-1所示

46、表5-1 imap_open()参数说明参数说明maibox必选参数。服务器地址username必选参数。用户帐号password必选参数。用户密码options可选参数。该参数取值及说明如表5-2int n_retries可选参数。试图与IMAP服务器建立连接的最大连接数表5-2 options参数取值及说明参数取值说明OP_READONLY打开连接使用只读状态OP_ANONYMOUS匿名读取NNTP服务器,不使用newsrc文件OP_HALFOPEN只与IMAP或NNTP服务器连接,不打开邮箱OP_EXPUNGE关闭连接时自动清除邮箱中的信件2)imap_close()imap_close

47、()函数用于关闭与POP3服务器的连接。语法:bool imap_close(resource imap_stream,int flag) imap_close()函数的参数说明如表5-3所示。图5-3 imap_close()参数说明参数说明imap_stream必选参数。imap_open()函数与服务器成功建立连接后所返回的连 接标识flag可选参数。如果将该参数设置为CL_EXPUNGE,则在断开与服务器 的连接的同时删除所有带有连接标记的邮件5. 1. 2部分主要代码处理用户登录信息的页面代码如下:?phpsession_start();$hostname=$_SESSIONhost

48、;$username=$_SESSIONuser;$userpwd=$_SESSIONpwd;if(!$mbox=imap_open($hostname,$username,$userpwd)echo alert(请通过正确的途径重新本系 统!);history.back();;exit;$id=$_GETid;$obj=imap_header($mbox,$id);?2发送带附件邮件模块发送带附件的E-mail页面首先对接收用户发送的收件人、邮件主题、附件、 邮件内容等信息,并获取附件的文件类型、大小等属性,然后应用 imap_mail_compose()函数创建MIME邮件,最后应用ima

49、p_mail()函数将邮件发 送到POP3服务器的” mailrootMailbox”目录下对应的邮箱内,下面对发送 带附件的E-mail信息处理页面中所使用的关键函数进行介绍。2. 1关键函数imap_mail_compose()函数创建一个MIME邮件语法:string imap_mail_compose(array envelope,array body)imap_mail_compose()函数的参数说明如表5-4所示。表 5-4 imap_mail_compose()参数说明参数说明envelope必选参数。由与邮件地址有关的首部信息组成,包括From,Reply_To,Cc,Bcc

50、,Subject 等项body必选参数。由具体的邮件以及与其格式有关的各种属性组成imap_mail()函数发送邮件函数语法:bool imap_mail(string to,string subject,string message,string additional_headers,string cc,string bcc,string rpath)其各种参数如下表5-5所示:表5-5 imap_mail()参数说明参数说明to必选参数。收件人地址subject必选参数。邮件主题message必选参数。邮件内容additional_headers可选参数。邮件额外首部信息cc可选参数。抄送

51、人地址bcc可选参数。密送人地址rpath可选参数。用于设置Return-Path首部5. 2. 2部分主要代码数据处理页send.php的代码如下:?phpif($_POSTsubmit!二)$subject=$_POSTsubject;$mailbody=$_POSTmailbody;$envelopefrom= $_POSTfromuser;$part1type = TYPEMULTIPART;$part1subtype = mixed;$part2type = TYPETEXT;$part2subtype = plain;$part2encoding = ENCBINARY;$part

52、2contents.data = $mailbodynnnt;$filename = $_FILESupfilename;if($filename!二)$file=$_FILESupfiletmp_name;$fp = fopen($file, r);$contents = fread($fp, filesize($file);fclose($fp);if($_FILESupfiletype)$mimeType = $_FILESupfiletype;else($mimeType =application/unknown;$part3type = TYPEAPPLICATION;$part3e

53、ncoding = ENCBINARY;$part3subtype = $mimeType;$part3description = $filename;$part3contents.data = $contents;$body1 = $part1;$body2 = $part2;if($filename!=)($body3 = $part3;$message=imap_mail_compose($envelope, $body);list($msgheader,$msgbody)=split(rnrn,$message,2);if(imap_mail($_POSTtouser,$subject

54、,$msgbody,$msgheader)echo alert(邮件发送成功!);history.back();else(echo alert(邮件发送失败!);history.back();?5. 3收邮件模块收邮件是邮件收发系统重要的功能之一,该页面通过分页形式显示邮件信息。下面对收邮件页面中所使用的关键函数进行介绍。5. 3. 1主要函数说明1)imap_check()函数imap_check()函数用于获取连接id,并返回包含当前邮箱信息的对象。语法:object imap_check(resource imap_stream)参数imap_stream为imap_open()函数成功

55、连接上邮件服务器后所返回的连 接标识。该函数返回对象可以调用的属性说明如表5-6所示。表5-6 imap_check()函数返回对象可调用的属性说明属性名说明Date根据RFC2822时间格式所返回的系统当前时间Driver返回邮箱所使用协议的名称,包括POP3,IMAP和NNTPMailbox返回邮箱的名称Nmsgs返回邮箱中邮件的个数Recent返回最近收到邮件的数目2)imap_search()imap_search()函数用于搜寻指定标准的信件。语法:array imap_search(resource imap_stream,string criterial,intoptions,s

56、tring charset)imap_search()函数的参数说明如表5-7所示。表5-7 imap_search()函数的参数说明参数说明imap_stream必选参数。imap_open()函数与服务器成功建立连接后所返回的连接标识criteria必选参数。指定查询的条件options必选参数。为SE_UID值charset可选参数。指定邮件所采用的字符集5. 3. 2部分主要代码输出邮件的相关属性,并在每封邮件前添加一个复选框,用来删除邮件的信息, 代码如下:Nmsgs;print_r(imap_search($mbox,SEEN);if($sumtd height=25 colspa

57、n=5 align=center”暂无邮件 ?phpelse(if($_GETpage= | is_numeric($_GETpage=false)($page=1;else($page=$_GETpage;$pagesize=10;if($sum%$pagesize=0)($totalpage=$sum/$pagesize;else($totalpage=ceil($sum/$pagesize);$frompage=($1)*$pagesize+1;$topage=$frompage+$pagesize;if($sum-$topage)0)($topage=$sum+1;for($i=$fr

58、ompage;$i5.4查看邮件模块5.4.1主要函数说明:查看邮件功能是建立在收件箱或查找邮件的基础上实现的,该页面供用户浏 览邮件资源,同时支持附件下载功能。下面对查看邮件页面中所使用的关键函数 进行介绍。imap_headers()函数imap_headers()函数用于获取全部信件的标头信息。语法:array imap_headers(resource imap_stream)参数imap_stream为imap_open()函数成功连接上IMAP服务器的返回值。imap_body()函数imap_body()函数用于获取指定邮件的内容。语法: string imap_body(res

59、ource imap_stream,int msg_number,int options)imap_body()函数的参数说明如表5-8所示。表5-8 imap_body()函数的参数说明参数说明imap_stream必选参数。imap_open()函数返回的IMAP标识msg_number必选参数。邮件号options可选参数。该参数的详细说明如表5-9所示表5-9 options参数值的说明参数值说明FT_UID指定邮件号为UID形式FT_PEEK如果已经设置了Seen标记,则取消对该标记的设置FT_INTERNAL指定返回字符串的格式采用国际标准,而不采用CRLF标准imap_fetch

60、body()函数imap_fetchbody()函数用于获取指定邮件的指定部分内容。语 法 :string imap_fetchbody(resource imap_stream,intmsg_number,string part_number,int options) imap_fetchbody()函数的参数说明如表5-10所示。表5-10 imap_fetchbody()函数的参数说明参数说明imap_stream必选参数。imap_open()函数与服务器成功建立连接后所返回的连接标 识msg_number必选参数。邮件号part_number必选参数。指定邮件部分号options可选

温馨提示

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

评论

0/150

提交评论