您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 网络程序设计-邮件传输
网络程序设计魏宁2020年2月23日第八章邮件传输§8.1电子邮件简介电子邮件(electronicmail,简称e-mail)是因特网上使用最多的一种应用,它为用户在因特网上设立了存放邮件的电子邮箱,发信人可以随时将电子邮件发送到收信人的电子邮箱,收信人也可以随时上网读取,发信人与收信人以异步的方式通信。电子邮件系统的构成一个电子邮件系统包括三个主要的构件,即用户代理,邮件消息传输代理和电子邮件使用的协议。电子邮件系统的构成电子邮件系统的构成电子邮件系统包括邮件服务器和邮件客户端;邮件服务器又包括邮件发送处理服务器(遵循SMTP)和邮件接收处理服务器(遵循POP3协议)。一般的邮件服务器(126、21cn、Hotmail等)都包括这两个功能。电子邮件系统的构成邮件服务器:发送服务器,接收服务器1.邮件发送服务器,SMTP服务器;smtp.21cn.comsmtp.scau.edu.cnsmtp.gmail.com2.邮件接收服务器,POP3服务器;pop3.21cn.compop3.scau.edu.cnpop3.gmail.com电子邮件系统的构成邮件客户端功能:发送邮件,接收邮件;邮件客户端程序:MicrosoftOutlook;FoxMail;邮件客户端程序的其他功能:在线/离线;邮件导出功能;电子邮件系统的构成一封邮件的发件人和收件人如下:发件人:scaucs@126.com收件人:scaulhx@gmail.com则发送邮件时连接的服务器是:A:smtp.126.comB:smtp.gmail.com电子邮件系统的实现电子邮件的发送与接收过程电子邮件系统的实现从以上的分析可以了解电子邮件系统的特点:①是一种异步的通信系统,不像电话,通话的双方都必须在场。②使用方便,传输迅速,费用低廉,不仅能传输文字信息,还能附上声音和图像。③在电子邮件系统的实现中,ISP的服务器必须7X24小时地不间断地运行,这样才能保证用户可以随时发送和接收信件,而发送或接收电子邮件的用户则随意。8.2电子邮件的格式在电子邮件系统的环境中,电子邮件信件是它传递的对象。最早规定电子邮件信件内容结构的标准是在1982发表的,称作RFC822,至今它仍然是Internet上电子邮件信件的当前标准。RFC822定义了信件从主机传递到主机时需要的格式化方式。它的主要用途是为信件提供规范化的格式,使不同类型的网络可以相互传递电子邮件。该标准的最新文本是RFC2822。RFC822规定,电子邮件信件的内容全部由ASCII字符组成,就是通常所说的文本文件,从组织上看,RFC822将信件内容结构分为信头和信体两大部分,中间用一个空白行。对于一行的字符数,有一个1000/80的限制规则。对于信件的行数,RFC822没有特别的限制,8.2电子邮件的格式下面是一个电子邮件信件内容文本的实例,可以大致说明头部行的形式,头部的行由关键字和冒号开始,头部和正文部分由空行分隔开。From:John_Q_Public@foobar.comTo:912743.253843@nonexist.comDate:Fri,1Jan9910:21:32ESTSubject:lunchwithme?BobCanwegettogetherforlunchwhenyouvisitnextweek?I’mfreeOnTuesdayorWednesday–justletmeknowwhichdaywouldprefer.john8.2电子邮件的格式邮件标题一般邮件的标题内容如下:Received:bysmtp.mail.163.com;Thu,10July200813:10:25+0800Message-ID:0c6501b1452a$3d4c8ef0$67d025fc@163.comFrom:HuaJinjgjinhua@163.comDate:Thu,10July200813:10:25+0800Reply-To:JinHuanthuajin@163.comTo:nthuajin@163.comSubject:c#NetworkProgrammingX-Mailer:MicrosoftOutlookExpress5.50.4133.24008.2电子邮件的格式标题定义的内容如下:(1)From:发件人账号。(2)To:收件人账号。(3)Reply-To:回复邮件的收件人账号。(4)Subject:邮件主题。(5)Date:邮件处理日期。(6)Received:邮件服务器处理的日期,该内容由邮件服务器自行加入邮件标题中。(7)Message-ID:邮件服务器所定义的邮件序号。(8)X-Mailer:邮件工具。(9)其他:根据不同类型的邮件服务器而加入的标题内容。邮件内容根据RFC822的定义,邮件内容以ASCII为其文字格式。SMTP协议用于发送邮件,其默认端口为25,SMTP协议定义了字段保留字及特殊符号等,以确保邮件能在邮件服务器间成功地被传送。RFC822定义了SMTP字段保留字及符号。如:Reply-To:JinHuanthuajin@163.com其中:(1)Reply-To:字段保留字。(2)(:):保留字与内容间需要用冒号隔开。(3)(”):用户名等置于引号之中。(4)():邮件账号及Message-ID等置于括号内。(5)(,):当含有多个邮件账号时,用逗号隔开。(6)(@):在邮件账号中,用户登录名与邮件服务器的DNS名称以@连接。(7)CRLF:每一行结尾要以CRLF结束,CRLF含义如下表所示。8.2电子邮件的格式项目说明ASCIIHex转义字符CR回车130X0D\rLF换行100X0A\n信件的头部1.信头的一般格式信头由若干信头字段(headerfield)组成。所有的信头字段包括四部分,字段名(fieldname),紧跟冒号:(colon),后跟字段体(fieldbody),最后以回车换行符(CRLF)终止。即信头字段=字段名:字段体CRLF信件的头部2.结构化字段和非结构化字段信头字段大体可以分为结构化字段和非结构化字段两种。结构化字段有特定的格式,由语法分析程序检测。非结构化的字段含有任意的数据,没有固定格式。信件的头部3.信头字段的元素尽管Email信件的总体结构非常简单,但一些信头字段的结构是很复杂的。下面介绍一些大多数字段共有的元素。(1)空白符(2)注解(3)字段折叠(4)字段大小写信件的头部4.标准的信头字段(1)与发信方有关的信头字段①写信人字段说明信件的原始创建者,给出他的电子信箱地址。创建者对信件的原始内容负责。格式:From:mailboxCRLF举例:From:wang@163.comCRLF信件的头部②发送者字段说明实际提交发送这个信件的人,给出他的电子信箱地址。当发信人与写信人不一样时使用。比如,秘书替经理发信。发送者对发送负责。格式:Sender:mailboxCRLF举例:From:wang@163.comCRLFSender:li@sina.comCRLF信件的头部③回复字段指定应当把回信发到哪里。如果有此字段,回信将会发给它指定的邮箱,而不会发给From字段指定的邮箱。比如,发送的是经理的信,但回信应交办公室处理。格式:Reply-TO:mailboxCRLF举例:From:wang@163.comCRLFReply-TO:zhao@sohu.comCRLF信件的头部(2)与收信方有关的信头字段①收信人字段指定主要收信人的邮箱地址,可以是多个邮箱地址的列表,地址中间用逗号隔开。格式:TO:mailboxlistCRLF举例:TO:zhang@263.comCRLF信件的头部②抄送字段指定此信件要同时发给哪些人,也称为抄送。也可以使用邮箱地址列表,抄送给多个人。格式:Cc:mailboxlistCRLF举例:Cc:zhang@863.comCRLF③密抄字段指定此信件要同时秘密发给哪些人,也称为密件抄送。也可以使用邮箱地址列表,密抄给多个人。格式:Bcc:mailboxlistCRLF信件的头部(3)其它的信头字段①日期字段Date字段含有电子邮件创建的日期和时间。格式:Date:date-timeCRLF举例:Date:Tue,04Dec200416:18:08+800CRLF②信件主题字段描述信件的主题。当回复信件时,通常在主题前面增加“Re:”前缀,标记为该信件为回复信件:当信件被转发时,通常在主题文字前面加上“Fw:”,“Fwd:”这样的前缀。格式:Subject:*textCRLF举例:Subject:Hello!CRLFSubject:Re:Hello!CRLF信件的头部③接受字段是投递信件的特定邮件服务器所作的记录。处理邮件投递的每个服务器必须给它处理的每个信头的前面加一个Received字段,用以描述信件到达目的地所经过的路径以及相关信息。当跟踪各个电子邮件问题时,这个信息很有帮助。格式:Received:[fromdomain]//发送主机[bydomain]//接收主机[viaatom]//物理路径[idmsg-id]CRLF//接收者msgid举例:Received:fromwang[195.0.0.1]byli[129.5.0.4]Tuedec200312:18:02+800CRLF信件的头部④注释字段用于把一个注解添加到信件中。格式:Comments:*textCRLF⑤重发字段当需要把收到的信件重发给另一组收信人的时候,可以保持整个原始信件不变,并简单地产生重发信件所要求的新信头字段。为避免与以前的字段相混。新添加的信头字段都加上Resent-前缀字符串,它们的语法与未加前缀的同名字段相同。格式:Resent-*CRLF举例:Resent-FromCRLFResent-SenderCRLFResent-dateCRLFResent-Reply-ToCRLF信件的头部⑥信件标识字段用于表示一个信件唯一标识,该字段通常由Smtp服务器生成,这个值通常是唯一的。形式根据使用的软件而定。通常左边是标识符,右边指定计算机名。格式:Message-ID:msg-idCRLF信件的头部5.扩展的信头字段如果想在信头中加入RFC822中没有规定的字段,就需要创建非标准字段。方法非常简单,只要在自定义的信头字段名的前面使用X-前缀。RFC822将这种方法称为扩展字段。事实上已经有许多扩展字段被广泛应用,但没有标准定义。例如:①X-LOOP字段②X-Mailer字段信件的头部6.信头中必须要有的字段在创建信件时,必须使用Date或Resent-Date字段指定创建信件的日期,必须使用From字段指定创建该信件的人或程序的信箱,必须至少使用TO、CC或Bcc中的一个,或者与它们等效的Resent-TO,Resent-CC,Resent-Bcc中的一个,来指定接收信件的人。除了这些创建信件时要求的信头以外,每个处理信件的邮件传输代理(MTA)必须在它处理的信件头部开始处加一个Received字段,就好像打了一个中转邮戳,这就是我们通常在许多信件的开始看到许多个Received字段的原因。构造和分析符合RFC822标准的电子信件1.信件的构造发送电子邮件的程序要进行电子信件的构造。信件主要分为两大部分:信头和信体,在两部分之间用空白行隔开。先构造信头,信头的必需字段有:一个Date字段,一个From字段,最少一个收信人字段。也可以根据需要加入其它的字段。信体部分比较简单,按照文本文件的方法编写就行。对于较长的信头字段或信体行,可以使用折叠的方法,把它们变为80字符以内的行。构造和分析符合RFC822标准的电子信件2.信件的语法分析接收邮件的程序要对邮件进行结构和语法分析。信件的语法分析是构造信件的逆过程,通过分析,从中提取必要的信息,使用户最终看到的不是软件接收下来的原始信件,而是经过处理
本文标题:网络程序设计-邮件传输
链接地址:https://www.777doc.com/doc-3960059 .html