当前位置:文档之家› MIME协议及邮件格式分析

MIME协议及邮件格式分析

电子邮件也许是一个Internet上的流行最广泛的应用。也是我们现在的大多数网络办公流程的基础。各种邮件服务器很多,但都大都遵循以1982年出版的RFC822--《ARPA网络文本信息格式标准(STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES)》为基础的一系列邮件格式的规定。

RFC(The Requests for Comments)是用来规定互联网工作标准的文档。我们使用的时候并没有注意到这些协议在我们的邮件通信过程中默默的发挥着的作用,这丝毫也不能减低这些作用的重要性。邮件内部还有很多不为人知的秘密。

在RFC822中规定一封信包括一个必须的多个头部域(header fields)和一个可选的体部(body)组成。从一封信头开始至第一个空行都是头部。头部定义了一个邮件的各项基本要素,路由信息等内容。

在Outlook Express中选定一封信看它的属性。在详细资料选项卡中显示的就是这封邮件的头部内容。也可以选定一封信,另存为一个.eml文件。由于文件是一个纯文本文件,用一般的编辑器打开就可以看到邮件的内容。

头部有各个头部域组成,每一个头部域都包括域名(field-name)和域体(field-body),它们之间以":"分隔。每一个头部域都可以看作由ASCII码字符组成的独立的文本。常见的头部域包括:"Return-Path", "Received", "Date", "From", "Subject", "Sender","To", "cc","MIME-Version"等。各头部域之间没有规定顺序。

就像各个域的名字一样。他们表示的具体意义也不同。

Return-Path域表示退信的地址。

Received域表示路由信息。

Internet上的信件可能是由多个服务器依靠协议传递到达最终的目的邮箱的。每一个服务器都会把自己的一段Received域信息添加近信件。所以可能有多段Received域,依传递次序排列。这个域的内容很有意思,我们可以根据每一段的内容来跟踪一封信在internet上的传递过程。网管人员也可以根据这些信息做出很有价值的判断。

例如一段代码中

Received: from unknown (unknown [202.108.44.208]) by https://www.doczj.com/doc/7e2752779.html, (Postfix) with SMTP id 74E0E8 for; Fri, 28 Feb 2003 18:10:25 +0800 (CST)中,from 表示发送主机,by表示接受主机,via物理路径(本例没有),with表示使用的协议,id表示接受消息号,for表示目的邮件地址,分号后面表示时间。

Date域表示建立信件的时间。

From域表示邮件作者。

Subject域就是邮件的主题。

Sender域表示邮件的实际发送者。

To,cc域都表示接受的邮件地址。

MIME-Version域表示MIME的版本(以后扩充的域)

还有一个域—Content-Type。标识了一个重要的概念:邮件内容的格式。这个域的内容根据互联网的发展产生,使邮件可以用来传输非文本内容,在RFC822中并没有定义,而是在后续的RFC2045,RFC2046等文档中有定义。

还有一些不太常见的头部域,如"References","Message-ID"域。以及一些由不同厂家定义的自己的域(域名以"X-"开头)。

知道了这些知识,就可以看懂邮件头部。了解到那些邮件的秘密。

比如这是一封邮件的头部。

Return-Path: "sea"

Received: from unknown (unknown [202.108.44.208])

by https://www.doczj.com/doc/7e2752779.html, (Postfix) with SMTP id 74E0E8

for ; Fri, 28 Feb 2003 18:10:25 +0800 (CST)

Received: from https://www.doczj.com/doc/7e2752779.html, (unknown [211.150.100.6])

by 192.168.1.208 (Coremail:https://www.doczj.com/doc/7e2752779.html,) with SMTP id cAsAAJY1Xz7kAmQG.1

for ; Fri, 28 Feb 2003 18:10:30 +0800 (CST)

Received: from sea (unknown [192.168.18.160])

by https://www.doczj.com/doc/7e2752779.html, (Postfix) with ESMTP id E55D02675F

for ; Fri, 28 Feb 2003 18:09:58 +0800 (CST)

Message-ID: <000901c2df11$2fcac090$a012a8c0@sea>

From: "sea"

To: "=?gb2312?B?usK6vQ==?="

Message-ID: <000901c2df11$2fcac090$a012a8c0@sea>

References: <000c01c2decb$9c7b7860$a012a8c0@sea>

<004601c2dee2$28a348c0$2400a8c0@haostation>

<001501c2deeb$352b34a0$a012a8c0@sea>

Subject: Re: hello

Date: Fri, 28 Feb 2003 18:07:22 +0800

MIME-Version: 1.0

Content-Type: multipart/alternative;

boundary="----=_NextPart_000_0006_01C2DF54.3DDEBE50"

X-Priority: 3

X-MSMail-Priority: Normal

X-Mailer: Microsoft Outlook Express 6.00.2600.0000

X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000

通过辨认就可以知道这是一封从(From域)"sea" 写给(To域)"=?gb2312?B?usK6vQ==?=" 的Id (Message-ID域)为<000901c2df11$2fcac090$a012a8c0@sea>的回信。退信的地址(Return-Path域)是haibo.yang@netcscom可以看出(References域)这封信已经经过了连续三次回复。主题(Subject域)是Re: hello。时间(Date域)是2003年的3月28日。邮件优先级(X-Priority域)是普通。邮件的传递依次经过了三个服务器(Received域):https://www.doczj.com/doc/7e2752779.html,;unknown;和https://www.doczj.com/doc/7e2752779.html,。还可以看到各服务器的协议和到达各服务器的时间。其中Postfix和Coremail都是常见的邮件系统。其中邮件接收地址中的内容由于包含汉字进行了编码。

一封邮件首先建立的是核心的几个域:From,To,Message-Id,Subject,Date等,在传输过程中每通过一个服务器再由此服务器在邮件头部添加一行Received信息,最后一个服务器添加退信地址(Return-Path)。

邮件头的格式制定的细节是根据信息交流和网络传输的特点制定的。阅读它们不仅可以知道邮件传输的秘密,还可以让我们体会到协议制定与实现间的互相关联的紧密关系。可以通过https://www.doczj.com/doc/7e2752779.html,/ 查询到RFC822,同时可以查询到其它重要的RFC文档。

MX记录的应用

在DNS服务器上除了可以建立主机名与IP地址的映射外,还可以建立其他多种映射,例如,建立某个主机名与其别名的映射;建立某个域名与其SMTP服务器的映射。在DNS服务器上创建的各项映射关系称为记录,一项映射关系就是一条记录,在DNS服务器上创建的主机名与IP地址的映射关系称为A记录,主机名与别名的映射关系称为CNAME记录,域名与其SMTP服务器的映射关系称为MX记录。

在DNS服务器上为什么要建立MX记录呢?即为什么要建立域名与其SMTP服务器的映射关系呢?这与电子邮件地址的表示形式和工作原理有关。邮件地址后缀部分表示的通常都是一个域名,而不是接收邮件的服务器的主机名,例如,邮件地址“zxx@https://www.doczj.com/doc/7e2752779.html,”中的“https://www.doczj.com/doc/7e2752779.html,”对应的就是一个域名。域只是一个逻辑组合概念,它并不代表真正的计算机,对于使用某个域名作为后缀的邮件地址,外界发送给它的电子邮件必须由一台专门的SMTP服务器来进行接收和处理,接收和处理某个域的电子邮件的SMTP服务器即为该域的SMTP服务器,外界发送给某个域的电子邮件实际上都是发送给该域的SMTP服务器。外界如何知道一个域的SMTP服务器的地址呢?这就是通过管理该域的DNS服务器上的MX记录来获得的,这也就是在DNS服务器上为什么要建立域名与其SMTP服务器的映射关系的原因。

当某台SMTP服务器要给“zxx@https://www.doczj.com/doc/7e2752779.html,”发送一封电子邮件时,该SMTP服务器将根据邮件地址的后缀部分而去查询“https://www.doczj.com/doc/7e2752779.html,”这个域的MX记录,得到这个域的SMTP服务器的主机名为“https://www.doczj.com/doc/7e2752779.html,”,然后将邮件发送给“https://www.doczj.com/doc/7e2752779.html,”这个SMTP服务器。

动手实践根据域名查询SMTP服务器

Windows操作系统自带的nslookup命令可以查询一个域的MX记录。要想知道负责接收某个电子邮箱的邮件的SMTP 服务器,可以先根据该邮件地址的后缀部分推断出其域名,然后使用nslookup命令进行查询即可。下面以查找负责接收“zxx@https://www.doczj.com/doc/7e2752779.html,”这个邮件地址的SMTP服务器的信息为例进行讲解。

启动Windows下的DOS命令行窗口,执行nslookup命令,结果如图1.16所示。

图1.16中“https://www.doczj.com/doc/7e2752779.html,”表示执行nslookup命令的这台计算机当前所使用的DNS查询服务器的主机名,“211.161.46.84”则表示该DNS服务器的IP地址。

在图1.16中的“>”提示符后面先输入“set type=mx”命令,设置所要查询的记录类型为MX,然后输入域名“https://www.doczj.com/doc/7e2752779.html,”,结果如图1.17所示。

图1.16 图1.17

图1.17中显示了“https://www.doczj.com/doc/7e2752779.html,”这个域的SMTP服务器的主机名和IP地址,其中“https://www.doczj.com/doc/7e2752779.html,”为SMTP 服务器的主机名,并且该主机名对应了3个IP地址。这说明“https://www.doczj.com/doc/7e2752779.html,”为了扩充其邮件处理能力,使用了3台SMTP 服务器来接收外界发送给该域的邮件,这3台服务器的主机名都为“https://www.doczj.com/doc/7e2752779.html,”,外界的SMTP服务器可以选择其中任何一台进行连接,然后将邮件发送给该服务器。

在图1.17中的“>”提示符后面再次输入“https://www.doczj.com/doc/7e2752779.html,”,nslookup命令将再次查询该域的MX记录,结果如图1.18所示。

比较图1.18中的用方框标识的部分,可以看到这两次查询出的“https://www.doczj.com/doc/7e2752779.html,”所对应的3个IP地址的排列顺序并不相同,第一次查询时“202.108.3.187”排列在最前面,而第二次查询时却变成了“202.108.3.188”排列在最前面。如果继续查询“https://www.doczj.com/doc/7e2752779.html,”域的MX记录,可以看到“https://www.doczj.com/doc/7e2752779.html,”所对应的3个IP地址的排列顺序总是在改变。这是由于sina在管理“https://www.doczj.com/doc/7e2752779.html,”域的DNS服务器上进行了专门的设置,当外界每次查询“https://www.doczj.com/doc/7e2752779.html,”这个主机名的IP地址时,管理“https://www.doczj.com/doc/7e2752779.html,”域的DNS服务器都将对该主机名所对应的3个IP地址进行轮循排列后再返回。

图1.18

对于查询到一个主机名对应多个IP地址的情况,外界的计算机通常都是选择其中的第一个IP地址来进行通信,只要管理“https://www.doczj.com/doc/7e2752779.html,”域的DNS服务器每次都将“https://www.doczj.com/doc/7e2752779.html,”所对应的3个IP地址进行轮循排列后再返回给外界,外界的SMTP服务器将会分别选择到不同的IP地址来进行通信,sina通过这种简单的方式就在“https://www.doczj.com/doc/7e2752779.html,”所对应的3台SMTP服务器之间实现了负载均衡。

提示:使用nslookup查询“https://www.doczj.com/doc/7e2752779.html,”域的MX记录时,读者可能会遇到DNS服务器只返回SMTP服务器的主机名,而不返回该主机名所对应的IP地址的情况,这时候可以在原来的nslookup命令窗口中输入“set type=a”命令,即

将要查询的记录类型设置为A,然后输入前面查询到的SMTP服务器的主机名就可以得到其IP地址,如图1.19所示。

图1.19

电子邮件的工作原理

下面以sina和sohu这两个电子邮局为例来讲解电子邮件的传输过程和工作原理。假设sina邮箱的账户为

lisi@https://www.doczj.com/doc/7e2752779.html,,sohu邮箱的账户为wangwu@https://www.doczj.com/doc/7e2752779.html,,它们之间的邮件收发过程如图1.20所示。

图1.20

图1.20中实线部分表示lisi@https://www.doczj.com/doc/7e2752779.html,账户向wangwu@https://www.doczj.com/doc/7e2752779.html,账户发送邮件的过程,虚线部分表示

wangwu@https://www.doczj.com/doc/7e2752779.html,账户向lisi@https://www.doczj.com/doc/7e2752779.html,账户发送邮件的过程。下面通过分析lisi@https://www.doczj.com/doc/7e2752779.html,账户向wangwu@https://www.doczj.com/doc/7e2752779.html, 账户发送邮件的过程,来具体讲解一封邮件从发送到接收所涉及的环节。

lisi@https://www.doczj.com/doc/7e2752779.html,的邮件客户端程序(这里假设为Outlook Express)与sina的SMTP服务器建立网络连接,并以lisi的用户名和密码进行登录后,使用SMTP协议把邮件发送给sina的SMTP服务器。

sina的SMTP服务器收到lisi@https://www.doczj.com/doc/7e2752779.html,提交的电子邮件后,首先根据收件人的地址后缀判断接收者的邮件地址是否属于该SMTP服务器的管辖范围,如果是的话就直接把邮件存储到收件人的邮箱中,否则,sina的SMTP服务器向DNS服务器查询收件人的邮件地址后缀(https://www.doczj.com/doc/7e2752779.html,)所表示的域名的MX记录,从而得到sohu的SMTP服务器信息,然后与sohu的SMTP服务器建立连接并采用SMTP协议把邮件发送给sohu的SMTP服务器。

sohu的SMTP服务器收到sina的SMTP服务器发来的电子邮件后,也将根据收件人的地址判断该邮件是否属于该SMTP服务器的管辖范围,如果是的话就直接把邮件存储到收件人的邮箱中,否则(一般不会出现这种情况),sohu 的SMTP服务器可能继续转发这封电子邮件,也可能丢弃这封电子邮件。

拥有wangwu@https://www.doczj.com/doc/7e2752779.html,账户的用户通过邮件客户端程序(这里假设也为Outlook Express)与sohu的POP3/IMAP 服务器建立网络连接,并以wangwu的用户名和密码进行登录后,就可以通过POP3或IMAP协议查看wangwu@https://www.doczj.com/doc/7e2752779.html, 邮箱中是否有新邮件,如果有的话,则使用POP3或IMAP协议读取邮箱中的邮件。

图1.20中的虚线部分表示wangwu@https://www.doczj.com/doc/7e2752779.html,账户向lisi@sina. com账户发送邮件的过程,此过程与lisi@https://www.doczj.com/doc/7e2752779.html, 账户向wangwu@ https://www.doczj.com/doc/7e2752779.html,账户发送邮件的过程类似,这里不再复述。

多想一想邮件客户端程序和SMTP服务器

分别如何发送邮件

邮件客户端软件与SMTP服务器之间,以及两台SMTP服务器之间都采用SMTP协议进行通信。邮件客户端软件只采用SMTP协议发送邮件,即邮件客户端软件只作为SMTP协议的发送方。SMTP服务器既要采用SMTP协议向其他SMTP服务器发送邮件,又要采用SMTP协议接收其他SMTP服务器或邮件客户端软件发送来的邮件,即SMTP服务器既作为SMTP 协议的发送方,又作为SMTP协议的接收方。邮件客户端软件与SMTP服务器都可以使用SMTP协议发送邮件,仅发送邮件这一功能而言,它们在技术实现上有何差异呢?它们的差异主要体现在以下两个方面:

(1)SMTP服务器接收到邮件客户端软件发送来的邮件后,需要根据收件人地址的域名将邮件转发给目标域的SMTP 服务器,而大量的收件人地址中肯定会出现各种可能的域名,因此,SMTP服务器涉及到要与其他多台不能事先确定的SMTP服务器进行通信,它需要具有根据收件人地址的域名查询出该域的SMTP服务器的功能,即需要具有查询域名的MX记录的功能。邮件客户端软件被设置为与固定的SMTP服务器通信,它可以直接与指定的SMTP服务器建立网络连接,因此它不需要具有根据收件人地址的域名来查询该域的SMTP服务器的功能。

(2)对于来自某个邮件客户端软件的邮件传输请求,SMTP服务器可能需要对发件人的用户账号信息进行验证,因此,邮件客户端软件需要具有向SMTP服务器传送用户账号信息的功能。SMTP服务器能够直接接受来自其他SMTP服务器的邮件传输请求,因此,SMTP服务器在发送邮件时根本不需要传送用户账号信息的功能。

RFC822邮件格式

邮件内容的格式在RFC822文档中定义,它包括两个主要的组成部分:邮件头和邮件体。在第2章的SMTP协议的实验中,it315_test @https://www.doczj.com/doc/7e2752779.html,邮箱中接收到的it315_test@https://www.doczj.com/doc/7e2752779.html,发送来的邮件的最终内容如例程3-1所示,其中的行号不属于邮件内容,是作者为了便于讲解而加上的。

例程3-1 test.eml

1.Return-Path:

2.Delivered-To: it315_test@https://www.doczj.com/doc/7e2752779.html,

3.Received: from https://www.doczj.com/doc/7e2752779.html, (unknown [202.108.3.177])

4.by https://www.doczj.com/doc/7e2752779.html, (Postfix) with SMTP id E4F9802C1249

5.for ; Thu, 10 Nov 2005 16:39:50 +0800 (CST)

6.Received: (qmail 49221 invoked from network); 10 Nov 2005 08:39: 33 -0000

7.Received: from unknown (HELO it315?test) (218.246.5.151)

8. by https://www.doczj.com/doc/7e2752779.html, with SMTP; 10 Nov 2005 08:39:33 -0000

9.From: it315_test@https://www.doczj.com/doc/7e2752779.html,

10.To: it315_test@https://www.doczj.com/doc/7e2752779.html,

11.subject:test

12.Message-Id: <20051110083950.E4F9802C1249@https://www.doczj.com/doc/7e2752779.html,>

13.Date: Thu, 10 Nov 2005 16:39:50 +0800 (CST)

14.Status: RO

15.X-UIDL: 1131611863.21509_77.mx72

16.

17.test!!!

例程3-1中的第1~15行是邮件的邮件头,第17行是邮件的邮件体,邮件头和邮件体之间以一个空行进行分隔。这封邮件的邮件体内容非常少,只有一行“test!!!”文本。邮件头部分由多个头字段和字段内容组成,各种头字段分别用于表示邮件的发件人、收件人、发件时间和主题等信息。细心的读者可能已经看到,例程3-1中的邮件头部分比在第2章的SMTP协议的实验中实际发送的邮件头多出了一些头字段,这些头字段是各个SMTP服务器在传递邮件的过程加上的。SMTP服务器在传递邮件时,会把一些相关信息增加到邮件的邮件头中,这种情况有点类似于现实生活中的邮局在处理邮件时,通常都会在信封上加盖邮戳一样,表示这封邮件在什么时候经过了哪个邮局和由哪个工作人员经手处理。SMTP服务器按从下往上的方式添加各个字段,即先添加的字段位于后添加的字段的下面,例如,例程3-1中的邮件是由sina发送给sohu的,它首先经过sina的SMTP服务器,然后经过sohu的SMTP服务器,所以,sohu的SMTP 服务器添加的头字段(1~5行)位于sina的SMTP服务器添加的头字段(6~8行)的上面。另外,POP3服务器也会在邮件头中增加一些头字段,例如,例程3-1中的12~15行。

每一个邮件头以“字段名:字段值”的格式出现,即每一行邮件头的内容依次由字段名、冒号、空格、字段值、回车换行符组成。RFC822文档中定义了多个标准的邮件头字段,每一个邮件头字段表示一种特定的信息。邮件头中也可以包含自定义的头字段,这种自定义的头字段通常是某个组织或机构内部专用的。下面是对例程3-1中出现的一些主要的邮件头字段的解释:

—Return-Path 该字段代表邮件的回复地址,该字段内容由接收邮件的SMTP服务器填写,接收邮件的SMTP 服务器从邮件发送程序发出的mail form命令中获得该字段内容。

—Received 该字段的基本格式为Received from A by B for C,其中A为发送方,B为接收方,C为收件人的邮箱地址。该字段的内容由接收邮件的SMTP服务器填写,常常被用来追踪邮件传输的路线和分析邮件的来源,例如,从例程3-1中的各个Received字段中,可以知道这封邮件的传输路径:从IP地址为【218.246.5.151】的机器上发出→【https://www.doczj.com/doc/7e2752779.html,】→【https://www.doczj.com/doc/7e2752779.html,】→【it315_test@https://www.doczj.com/doc/7e2752779.html,】。例程3-1中的第6行的“Received: (qmail 49221 invoked from network)”是sina的SMTP服务器内部调用的一个邮件发送模块添加的,它说明sina的SMTP 服务器接收到邮件后再通过这个邮件发送模块将邮件转发出去。显然,通过分析一封邮件的源内容,是可以知道发件人的IP地址的。

—From 该字段用于指定的发件人地址,邮件阅读程序显示的发件人地址就来源于这个字段。From字段中指定的发件人地址可以随意乱写,甚至不写,所以,邮件阅读程序显示的发件人地址不一定是真实的,这通常可以通过查看邮件头中的Return-Path字段来判断发件人的真实性。注意,SMTP协议中mail from命令中指定的发件人地址也可以伪造,所以,邮件头中的Return-Path字段也不是可以完全信赖的,对于比较重要的邮件,最好还是通过电话确认一下。

—to 该字段用于指定收件人地址。

—subject 该字段用于指定邮件的主题,如果主题内容中包含有ASCII码以外的字符,通常要对其内容进行编码。

—date 该字段用于指定邮件的发送时间。

邮件头中除了包含上面的这些字段外,还有另外两个比较常用的字段:

—cc 该字段用于指定邮件的抄送地址。

—bcc 该字段用于指定邮件的暗送地址。

抄送地址和暗送地址的区别在于,邮件阅读程序通常都不显示暗送地址,而会显示抄送地址。

邮件阅读程序在显示邮件信息时,所显示出来的发件人、收件人和主题等信息就是从相应的邮件头字段中提取出来的,例程3-1的内容在OutLook中的显示效果如图3.1所示。

图3.1

动手实践在Outlook中查看邮件的源内容

选中Outlook收件箱内的一封邮件,单击鼠标右键,然后单击弹出菜单中的“属性”菜单项,如图3.2所示。

在打开的属性对话框中,单击“详细信息”标签,然后单击“邮件来源…”按钮,就可以看到邮件的源文件内容了,如图3.3所示。

图3.2 图3.3

RFC822文档定义了邮件内容的主体结构和各种邮件头字段的详细细节,但是,它没有定义邮件体的格式,RFC822文档定义的邮件体部分通常都只能用于表述一段普通的文本,而无法表达出图片、声音等二进制数据。另外,SMTP服务器在接收邮件内容时,当接收到只有一个“.”字符的单独行时,就会认为邮件内容已经结束,如果一封邮件正文中正好有内容仅为一个“.”字符的单独行,SMTP服务器就会丢弃掉该行后面的内容,从而导致信息丢失。

由于Internet的迅猛发展,人们已不满足于电子邮件仅仅是用来交换文本信息,而希望使用电子邮件来交换更为丰富多彩的多媒体信息,例如,在邮件中嵌入图片、声音、动画和附件。但是,由于图片和声音等内容是非ASCII码的二进制数据,而RFC822邮件格式只适合用来表达纯文本的邮件内容,所以,要使用RFC822邮件格式发送这些非ASCII 码的二进制数据时,必须先采用某种编码方式将它们“编码”成可打印的ASCII字符后再作为RFC822邮件格式的内容。

邮件阅读程序在读取到这种经过编码处理的邮件后,再按照相应的解码方式解码出原始的二进制数据,这样就可以借助RFC822邮件格式来传递多媒体数据了。这种做法需要解决一下两个技术问题:

(1)邮件阅读程序如何知道邮件中嵌入的原始二进制数据所采用的编码方式;

(2)邮件阅读程序如何知道每个嵌入的图像或其他资源在整个邮件内容中的起止位置。

针对这个问题,人们后来专门为此定义了MIME(Multipurpose Internet Mail Extension,多用途Internet邮件扩展)协议。

MIME协议用于定义复杂邮件体的格式,它可以表达多段平行的文本内容和非文本的邮件内容,例如,在邮件体中内嵌的图像数据和邮件附件等。另外,MIME协议的数据格式也可以避免邮件内容在传输过程中发生信息丢失。MIME协议不是对RFC822邮件格式的升级和替代,而是基于RFC822邮件格式的扩展应用。一言以蔽之,RFC822定义了邮件内容的格式和邮件头字段的详细细节,MIME协议则是定义了如何在邮件体部分表达出的丰富多样的数据内容。

一个采用了MIME协议的电子邮件就叫做MIME邮件,MIME邮件在RFC822文档中定义的邮件头字段的基础上,扩充了一些自己专用的邮件头字段,例如,使用MIME-Version头字段指定MIME协议的版本,使用Content-Type头字段指定邮件体的MIME类型,使用Content-Transfer-Encoding头字段指定编码方法,如下所示:

MIME-Version: 1.0

Content-Type:multipart/mixed;boundary="----=_NextPart_000_0050_01C"

其中,“multipart/mixed”部分说明邮件体中包含有多段数据,每段数据之间使用boundary属性中指定的字符文本作为分隔标识符。

另外,MIME邮件也扩展了RFC822文档中已经定义了的邮件头字段的内涵,例如,定义了subject头字段中的值内容的格式,以便通过编码的方式让邮件主题中也可以使用非ASCII码的字符。subject头字段中的值嵌套在一对“=?”和“?=”标记符之间,标记符之间的内容由三部分组成:邮件主题的原始内容的字符集、当前采用的编码方式、编码后的结果,这三部分之间使用“?”进行分隔。下面是一个对包含有非ASCII码字符的邮件主题进行了编码后的结果:Subject: =?gb2312?B?TUlNRdCt0unLtcP308q8/g==?=

其中,“gb2312”部分说明邮件主题的原始内容为gb2312编码的字符文本,“B”部分说明对邮件主题的原始内容按照BASE64方式进行了编码,“TUlNRdCt0unLtcP308q8/g==”为对邮件主题的原始内容进行了BASE64编码后的结果。

可见,MIME邮件与普通的RFC822邮件的关系犹如Java编程语言中的子类与父类的关系,子类是对父类的扩展,子类功能更强大,但子类离不父类的支持。如果需要了解MIME的详细细节,可以查阅RFC 2045~2049系列文档。

MIME邮件的组织结构

一封MIME邮件可以由多个不同类型的MIME消息组合而成,一个MIME消息表示邮件中的一个基本MIME资源或若干基本MIME消息的组合体。每个MIME消息的数据格式与RFC822数据格式相似,也包括头和体两部分,分别称为MIME 消息头和MIME消息体,它们之间使用空行分隔。MIME消息体中包含了资源的具体内容,MIME消息头中则包含了对资源的描述信息。多个相同层次的MIME消息必须形成一个MIME组合消息,它们共同作为所形成的MIME组合消息的MIME 消息体,相互之间采用某种分隔标识符进行分隔,MIME组合消息的消息头中需要描述其中的多个MIME消息的组合类型和分隔标识符。一个MIME组合消息还可以再与其他MIME消息共同形成一个更大的MIME组合消息,这样就形成了一种多层嵌套的组合关系,一封MIME邮件就是按这种组合方式所形成的一个最顶层的MIME组合消息。

MIME协议采用这种多层组合方式可以表达出复杂的邮件内容,例如,对于在OutLook Express中显示出的如图3.4所示效果的一封复杂邮件,可以采用图3.5所示的MIME组合结构来表达。

图3.4中的邮件正文为一段HTML格式的文本和其引用的一个图片资源,该邮件还包含两个附件:一个是WAV声音文件,一个是EXE可执行文件。该邮件的MIME结构如图3.5所示,其中的HTML文本内容、图片资源和两个附件用四个独立的MIME消息表示,HTML文本内容和图片资源又组合成一个表示邮件正文的MIME组合消息,这个MIME组合消息再与两个附件对应的MIME消息组合成了一个更大的MIME组合消息,这就形成了整封邮件的MIME消息。

图3.4

图3.5

MIME消息的头字段

1: Content-Type

对于表示某个具体资源的MIME消息,它的消息头中需要指定资源的数据类型;对于MIME组合消息,它的消息头中需要指定组合关系。具体资源的数据类型和组合消息的组合关系,都是通过消息头中的Content-Type头字段来指定的。Content-Type字段中的内容以“主类型/子类型”的形式出现,主类型有text、image、audio、video、application、multipart、message等,分别表示文本、图片、音频、视频、应用程序、组合结构、消息等。每个主类型下面都有多个子类型,例如text主类型包含plain、html、xml、css等子类型。multipart主类型用于表示MIME组合消息,它是MIME协议中最重要的一种类型。一封MIME邮件中的MIME消息可以有三种组合关系:混合、关联、选择,它们对应MIME 类型如下:

—multipart/mixed

表示消息体中的内容是混和组合类型,内容可以是文本、声音和附件等不同邮件内容的混和体,例如图3.5中的整封邮件的MIME类型就必须定义为multipart/mixed。

—multipart/related

表示消息体中的内容是关联(依赖)组合类型,例如图3.5中的邮件正文要使用HTML代码引用内嵌的图片资源,它们组合成的MIME消息的MIME类型就应该定义为multipart/related,表示其中某些资源(HTML代码)要引用(依赖)另外的资源(图像数据),引用资源与被引用的资源必须组合成multipart/related类型的MIME组合消息。

—multipart/alternative

表示消息体中的内容是选择组合类型,例如一封邮件的邮件正文同时采用HTML格式和普通文本格式进行表达时,就可以将它们嵌套在一个multipart/alternative类型的MIME组合消息中。这种做法的好处在于如果邮件阅读程序不支持HTML格式时,可以采用其中的文本格式进行替代。

一封最复杂的电子邮件的基本情况为:含有邮件正文和邮件附件,邮件正文可以同时使用HTML格式和普通文本格式表示,并且HTML格式的正文中又引用了其他的内嵌资源。对于这种最复杂的电子邮件,可以采用如图3.6所示的MIME 消息结构进行描述。

Content-Location:https://www.doczj.com/doc/7e2752779.html,/images/it315logo.gif

那么,在HTML正文中就可以使用如下HTML语句来引用该图片资源:

—Content-Base头字段

Content-Base头字段用于为内嵌资源设置一个基准路径,只有这样,Content-Location头字段中设置的URI才可以采用相对地址。例如,假设将一个表示内嵌图片的MIME消息的Content-Base和Content-Location头字段设置为如下形式:

Content-Base: https://www.doczj.com/doc/7e2752779.html,/images/

Content-Location: it315logo.gif

那么,内嵌资源的完整路径就是Content-Base头字段设置的基准路径与Content-Location头字段设置的相对路径相加的结果,在HTML正文中就可以使用如下HTML语句来引用该图片资源:

MIME邮件的编码方式

由于每个ASCII码字符只占用一个字节(8个bit位),且最高bit位总为0,即ASCII码字符中的有真正意义的信息只是后面的7个低bit位,而传统的SMTP协议又是基于ASCII码字符设计的,因此,一些基于传统SMTP协议设计的SMTP服务器在处理邮件内容时只取出每个字节中的7个低bit位进行处理,而将最高bit位忽略不计。显然,这样的SMTP服务器在处理包含有非ASCII码字符的邮件内容时,会出现严重的问题,这就限制了邮件中只能出现英文的ASCII码字符,而不能出现中文字符或二进制数据。

为了能够在邮件内容中包含中文、图像或声音等非ASCII字符的数据,人们想到了采用某种编码方式将非ASCII 字符的数据转换成可打印的ASCII字符后再发送,邮件阅读程序则按照相应的解码方式从邮件中还原出原始数据即可,比较常用的两种邮件编码方式为BASE64和Quoted-printable。后来的扩展SMTP协议允许直接在邮件中传递二进制数据,而不用对它们进行邮件编码,人们将这种没有进行邮件编码的二进制数据的邮件内容称为8bit编码,为了与此相区别,人们将没有进行邮件编码的纯ASCII码字符的邮件称为7bit编码。MIME消息体的邮件编码方式通过MIME消息头中的Content- Transfer- Encoding头字段指定,每种邮件编码方式的介绍如下:

—7Bit

指消息体内容全部是没有经过编码的ASCII字符。

— 8Bit

指消息体内容是没有经过编码的原始数据,且其中包含有非ASCII字符的数据。现在的邮件服务器基本上都支持8Bit编码,使用支持8Bit编码的邮件服务器可以简化邮件的处理过程。

— BASE64

Base64是将二进制数据转换成可打印的ASCII字符的一种最常见的编码方式,它的基本原理是将一组连续的字节数据按6个bit位进行分组,然后对每组数据用一个ASCII字符来表示。6个bit位最多能表示26=64个数值,因此可以使用64个ASCII字符来对应这64个数值,这64个ASCII字符为:

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

其中每个字符表示的数值就是该字符在上面的排列中的索引号,索引号从0开始编号。假设在内存中有如下三个连续的字节数据:

[0110,0001] [0110,0010] [0110,0011]

将它们按6个bit位进行分组后的形式如下:

[0110,00] [01,0110,] [0010,01] [10,0011]

分组后得到了四组数据,每组数据对应的十进制数值分别为24、22、9、35,它们分别对应Y、W、J、j这四个字符,所以,对[0110,0001] [0110,0010] [0110,0011]这三个字节的数据进行BASE64编码后的结果是“YWJj”。

BASE64编码要求把3个8位字节(即24个bit)的数据转化为4个6位字节(也是24个bit)的数据,如果原来的8位字节数据的字节个数不能被3整除,其余数只能是1或2,那么如何对余下的1个或2个8位字节数据进行处理呢?对于这种情况,仍然按6个bit位对剩余的字节进行分组,在最后不够6个bit位的内容后面添加几个为0的bit 位来凑成6个bit位,例如,如果最后剩下的一个8位字节的内容如下:

[0110,0001]

对它进行分组后的结果如下:

[0110,00] [01,0000]

其中用黑斜体标识的0为填充的bit位,所以,最后剩下的这个字节的BASE64编码结果为“YQ”。BASE64编码还有规定,如果编码后的整个结果文本的字符个数不是4的整数倍,那么需要在最后填充“=”字符来凑成4的倍数,所以,在最后这个字节编码的结果后面还要添加两个“=”字符,即“YQ==”。显然,如果最后剩下两个8位字节的内容,它可以被编码成三个字符,最后还需要添加一个“=”字符。对一大段数据进行BASE64编码时,可以在编码结果中的适当位置加入回车换行,MIME规范建议BASE64编码结果中的每行最多76个字符。

—Quoted-printable

Quoted-printable也是一种将二进制数据转换成可打印的ASCII字符的编码方式,它对ASCII字符不进行转换,只对非ASCII字符的数据进行编码转化。每个非ASCII字符的字节数据,都被转换成一个"="号后跟这个字节的十六进制数据,例如,“ab中国”的Quoted-printable编码结果为“ab=d6=d0=b9= fa”。显然,由于"="号在Quoted-printable 编码中具有的特殊意义,所以,原始数据中的"="号字符也需要进行编码转换,用“=3d”表示。

对一大段数据进行Quoted-printable编码时,可以在编码结果中的适当位置加入回车换行,在回车换行前需要额外再加入一个“=”字符,以表示后面的换行是因编码而造成的软回车,而非原始数据中原有的回车换行。例如,对于下面一段Quoted-printable编码后的数据:

=D5=E2=CA=C7=CD=A8=D0=C5=B5=C4=B3=CC=D0=

=F2, =C7=EB=D6=B8=BD=CC!

在第一行末尾的“=”字符和换行,都是由于编码后生成的。

MIME实例分析

了解MIME协议的基本组织结构后,下面用Outlook Express撰写出一封显示效果如图3.4所示的电子邮件,然后分析该邮件的源文件,以便读者更加深入地了解MIME协议。

启动Outlook Express,单击工具栏中的“创建邮件”按钮,在打开的“新邮件”对话框中输入收件人地址、主题和邮件正文,然后选中邮件正文,单击编辑窗口的工具栏上的“》”按钮,在弹出的菜单栏中单击表示超链接的图标,如图3.7所示。

图3.7

在打开的“超级链接”对话框中输入如图3.8所示的内容,然后单击“OK”按纽。

图3.8

再次单击编辑窗口的工具栏上的“》”按钮,在打开的如图3.7所示的菜单栏中单击表示图片的图标,在打开的“图片”对话框中单击“浏览”按钮,然后通过打开的对话框选择一个图片文件,结果如图3.9所示。

单击图3.9中的“OK”按钮,结果如图3.10所示。

图3.9 图3.10

单击图3.10所示窗口中的“插入”à“文件附件”菜单项,在打开的“插入附件”对话框窗口中选择需要发送的附件,如图3.11所示。

单击“附件”按钮,插入所选中的附件。

单击图3.10所示窗口中的“文件”à“保存”菜单项,在Outlook Express主窗口的“草稿”目录中就可以看到这封邮件,如图3.12所示。

图3.11 图3.12

将这封邮件从“草稿”目录中移动到“发件箱”目录中,接着按照3.1节中讲解的查看邮件源文件步骤,打开刚才撰写的这封邮件的源文件。或者在“草稿”目录中选中这封邮件,将它另存为一个eml文件,再用任意一种文本编辑程序打开这个eml文件,这样也可以查看到刚才撰写的这封邮件的源文件。为了便于读者看清邮件内容的组织结构关系,笔者专门为此画了一个描述邮件中的各个MIME消息分隔符的层次关系的示意图,如图3.13所示。

从图3.13中可以看出,在MIME组合消息的消息体中的每个消息单元都要以一个分割符开始,在组合消息的消息体结束时还需要用一个结束分割符。MIME消息中的分隔符的层次关系与一篇文章中的标题之间的层次关系非常相似,只是在每个组合消息结束时还要增加一个结束“标题”。为了便于讲解,笔者对刚才撰写的邮件源文件内容进行了适当修改,并添加了相应的注释,如下所示:

图3.13

1:From: "it315"

2:To:

3:Subject: =?gb2312?B?TUlNRdCt0unLtcP308q8/g==?=

4:Date: Thu, 1 Dec 2005 20:46:53 +0800

5:MIME-Version: 1.0

6:Content-Type: multipart/mixed;//定义邮件体类型为mixed

7:boundary="----=_NextPart_000_0050_01C"//定义整个邮件内容的分隔符

8:X-Priority: 3

9:X-MSMail-Priority: Normal

10:X-Mailer: Microsoft Outlook Express 6.00.2900.2670

11:X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670

12:

13:This is a multi-part message in MIME format.//邮件注释

14:

//整个邮件内容的第一部分(即邮件正文)的开始标记

15:------=_NextPart_000_0050_01C

16:Content-Type: multipart/related;

17:type="multipart/alternative";

18:boundary="----=_NextPart_001_0051_01C"//定义邮件正文内部的分隔符

19:

//邮件正文内部的第一部分的开始标记

20:------=_NextPart_001_0051_01C

21:Content-Type: multipart/alternative;

//定义邮件正文内部的第一部分的内部分隔符

22:boundary="----=_NextPart_002_0052_01C"

23:

//邮件正文内部的第一部分的第一部分的开始标记

24:------=_NextPart_002_0052_01C

25:Content-Type: text/plain;

26:charset="gb2312"

27:Content-Transfer-Encoding: base64

28:

29:u7bTrbTzvNK3w87KztLDx7XEzfjVvg0KDQog

//经BASE64编码后的文本格式的邮件正文

30:

//邮件正文内部的第一部分的第二部分的开始标记

31:------=_NextPart_002_0052_01C

32:Content-Type: text/html;

33:charset="gb2312"

34:Content-Transfer-Encoding: base64

35:

36:PCFET0NUWVBFIEhUTUwgUFVC......//经BASE64编码后的HTML格式的邮件正文37:

//邮件正文内部的第一部分的的结束标记

38:------=_NextPart_002_0052_01C--

39:

//邮件正文内部的第二部分(HTML中的内嵌资源)的开始标记

40:------=_NextPart_001_0051_01C

41:Content-Type: image/gif;

42:name="logo.gif"

43:Content-Transfer-Encoding: base64

44:Content-ID: <004f01c5f675$4e210300$b501a8c0@zxx>

45:

46:R0lGODlh/ABGAOYAADdhmaekZjxsq0N4vHik

47:xK27z9CtCJWpxCZEa3aczejr7......

// HTML中内嵌的经BASE64编码后的图片数据

48:

//邮件正文的结束标记

49:------=_NextPart_001_0051_01C—

50:

//整个邮件内容的第二部分(第一个附件)的开始标记

51:------=_NextPart_000_0050_01C

52:Content-Type: application/x-msdownload;

53:name="daemon.exe"

54:Content-Transfer-Encoding: base64

55:Content-Disposition: attachment;//声明内容类型为附件

56:filename="daemon.exe"

57:

58:TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA

59:AAAA0AAAAA4fug4AtAnNAAAAAA......// 第一个邮件附件内容

60:

//整个邮件内容的第三部分(第二个附件)的开始标记

61:------=_NextPart_000_0050_01C

62:Content-Type: audio/wav;

63:name="sndrec.wav"

64:Content-Transfer-Encoding: base64

65:Content-Disposition: attachment;//声明内容类型为附件

66:filename="sndrec.wav"

67:

68:UklGRjIAAABXQVZFZm10IBIAAAABAAEAIlYAACJWAAABAAgAKABmYWN0

69:AA==AAAAAAAAAAAAAAAAAACCC......//第二个邮件附件内容

70:

//整个邮件内容的结束标记

71:------=_NextPart_000_0050_01C5F6B8.5C492500--

源文件中第1~11行为邮件的邮件头,第15~71行为邮件体。邮件体中的15~49行为邮件正文,第51-59行为邮件的第一个附件,第61~71行为第二个附件。读者只要对照图3.13来阅读,就很容易看出这个邮件源文件内容的组织结构。关于上述的邮件源文件内容,还需要做出如下三点补充解释:

(1)每个MIME组合消息的Content-type头字段中的boundary属性用于定义其中嵌套的各个MIME消息之间的分隔符,如源文件中的第7行、第18行和第22行等。在各个MIME组合消息内部的起始分隔符是在该MIME组合消息的Content-type头字段中的boundary属性值前面增加了两个减号(-)字符而形成的,如源文件中的第15行、第20行和第24行等;而每个MIME组合消息的结束分隔符则是在其起始分隔符的后面又添加两个减号(-)字符而形成的,如源文件中的第38行、第49行和第71行。

(2)在每个MIME组合消息的消息体之前(即第一个开始分隔符之前),可以有一些附加的文本行,这些文本行相当于MIME消息的注释,在解码时将被忽略,如源文件的13行。

(3)源文件中的第44行使用Content-ID头字段为内嵌的图片资源指定了一个唯一标识号,在HTML格式的正文中需要使用这个唯一标识号来引用相应的内嵌资源,其引用语句为,但是由于整个HTML正文部分采用了Base64编码,所以在源文件的HTML正文部分无法看到原始的引用语句。

多学两招邮件传播病毒的原理

MIME协议其实就是一种邮件内容的组织协议,支持MIME协议的邮件阅读程序将根据MIME消息头中定义的MIME 类型,调用相应的解析程序来处理消息体中的数据。例如MIME消息头中定义为邮件附件时,邮件阅读程序会提示用户保存消息体中的数据,如果定义为图像文件时,邮件阅读程序则把消息体中的数据作为一个图像文件自动打开。

由于邮件数据通常是经过BASE64编码后的ASCII码数据,邮件阅读程序只能通过分析数据的MIME消息头来获知数据类型,无法通过分析数据本身来获知数据的类型,因此,一些病毒制造者就可以把病毒程序进行BASE64编码后,再附加在邮件的MIME消息体中,然后在MIME消息头中将其MIME类型定义为图片或声音等类型,而文件名的扩展名却为.exe。这样,当邮件阅读程序解码带有病毒程序的MIME消息体后,将执行解码后得到的病毒程序。前些年曾经在全球范围内流行的Nimda病毒,就是通过这种方式进行传播的,其示意源代码如下:

MIME-Version: 1.0

Content-Type: multipart/related;//声明所包含内容为内嵌资源

type="multipart/alternative";

boundary="====_ABC1234567890DEF_===="

--====_ABC1234567890DEF_====

Content-Type: multipart/alternative;

boundary="====_ABC0987654321DEF_===="

--====_ABC0987654321DEF_====

Content-Type: text/html;

charset="iso-8859-1"

Content-Transfer-Encoding: 7bit

--====_ABC0987654321DEF_====--

--====_ABC1234567890DEF_====

Content-Type: audio/x-wav; name="readme.exe"

//把exe文件定义成一个wav文件

Content-Transfer-Encoding: base64

Content-ID:

TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAA……//经BASE64编码后的病毒源代码

--====_ABC1234567890DEF_====

这封邮件传播病毒的运行原理非常简单,如上面的源文件中的黑体字部分及相应注释所示,它就是将一个可执行文件(readme.exe)作为一个audio/x-wav类型的声音文件嵌入到HTML页面中。由于最初的Outlook Express程序没有检查MIME消息的Content-Type头字段定义的MIME类型与其中的name属性指定的文件扩展名是否匹配,于是导致用户打开邮件时将执行解码后的readme.exe程序,从而感染上了病毒。这个病毒程序又利用Outlook Express中的地址簿向别人发送带毒的邮件,这样一传十,十传百,Nimda蠕虫就大行其道了。

公司电子邮件格式范文

[标签:标题] 篇一:电子邮件的格式范文3篇 电子邮件的格式范文3篇 电子邮件(E-mail)是建立在计算机网络上的一种通信形式。计算机用户可以利用网络传递电子邮件,实现相互通信。下文是小编为大家整理的电子邮件的格式的范文,仅供参考。 在电子邮件的写作中要注意哪些呢?如何写好一封规范的电子邮件呢? 在写电子邮件时候,要采用日常办公运用的商业信函格式,使用正规的文字,不用或避免应用网络语言,诸如3Q、IFU等。 主题栏:主题明确,一目了然,让人看了知道个所以然,不会是一头雾水,不知所云,当作垃圾邮件删除掉。 称谓:准确,切不可含糊不清。是先生别称成了小姐;是小姐别喊成了先生。这是大忌讳!一次,青岛一家公司发信到公司,把我们公司的运营总监张可先生称呼成了张可小姐。搞得张先生郁闷一天。当你搞不清对方准确的性别时候,那就称老师就没错。主体:简明,扼要,把事情说清楚就可以了,不要罗嗦,拖泥带水的。事情多,写的多,那最好是分成几小段,看的清楚明了。 祝语:可以写祝您工作愉快,工作顺利,或者顺祝商祺等都可以,表示真诚。落款:公司名称,个人姓名,日期。 另外,在信件中一定要写明你的联系方式,最好是手机,随时保持畅通。 电子邮件的格式范文一: 尊敬的读者朋友: 非常感谢您长期以来对《世界经理人》杂志的支持! 为了回报您对我们的拥护,我在这里很荣幸地邀请您成为我们上线1周年的尚品·人生网的尊贵会员,您将享受到我们仅为尚品·人生网站会员提供的所有优惠和特权,更有机会在尚品·人生网的社区中结识其他与您一样成功的精英人士! 您只要点击"接受",便可自动成为尚品·人生网站的尊贵会员。 作为世界经理人网的姊妹网站,尚品·人生网以"享受成功品味生活"为使命,让成功人士在取得财富成果的同时,也能尽情享受丰盛的人生,得到生活与事业的和谐平衡。非常感谢您的关注,期待您加入尚品·人生网! 此致 敬礼! CRAIG PEPPLES 环球资源执行总裁《世界经理人》《尚品·人生》出版人 电子邮件的格式范文二: xxx, 您好,我是北京雅致人生管理顾问有限公司的王艳。很高兴能够认识您,并有幸将我们公司介绍给您。我们公司培训主要以素质技能技巧为主,曾经成功的为 IBM/HP/SUMSUNG/微软、中海油、大唐移动、北京移动、信息产业部电信研究院服务过,欢迎您访问我们公司的网址:,对我们公司有更多的了解。 附件是我们公司擅长的培训课程及讲师简历。请您查收。 如有任何问题或者建议请您随时与我联系! 希望我们能达成互补,在未来有合作的机会! 感谢您对我工作的支持! 祝您工作开心快乐! 王艳

电子邮件协议综述

常见的电子邮件协议有以下几种:SMTP(简单邮件传输协议)、POP3(邮局协议)、IMAP (Internet邮件访问协议)。这几种协议都是由TCP/IP协议族定义的。SMTP(Simple Mail Transfer Protocol):SMTP主要负责底层的邮件系统如何将邮件从一台机器传至另外一台机器。POP(Post Office Protocol):目前的版本为POP3,POP3是把邮件从电子邮箱中传输到本地计算机的协议。IMAP(Internet Message Access Protocol):目前的版本为IMAP4,是POP3的一种替代协议,提供了邮件检索和邮件处理的新功能,这样用户可以完全不必下载邮件正文就可以看到邮件的标电子邮件 题摘要,从邮件客户端软件就可以对服务器上的邮件和文件夹目录等进行操作。IMAP协议增强了电子邮件的灵活性,同时也减少了垃圾邮件对本地系统的直接危害,同时相对节省了用户察看电子邮件的时间。除此之外,IMAP协议可以记忆用户在脱机状态下对邮件的操作(例如移动邮件,删除邮件等)在下一次打开网络连接的时候会自动执行。 除了我们常见的通用协议SMTP、POP3、IMAP ,现在有一些邮件系统厂商自主研发了私有协议,比如去年Coremail就研发了了私有协议,这个私有协议达到了邮件加速的目的,邮件发送接收比使用普通协议快了一倍,不过既然是私有协议,目前只能使用在同一个系统中,比如网易邮箱和139手机邮箱都用了Coremail邮件系统,他们之间互相收发邮件比收发其它系统的邮件要快一半。 这种私有协议一般是实力雄厚、终端用户多的厂商才具有研发的意义。 什么是POP 大家一听这个POP,读起来有点像是中文中的泡泡,其实这是一个英文术语的缩写。POP 的全称是Post Office Protocol,即邮局协议,用于电子邮件的接收,它使用TCP的110端口。现在常用的是第三版,所以简称为POP3。POP3仍采用Client/Server工作模式,Client被称为客户端,一般我们日常使用电脑都是作为客户端,而Server(服务器)则是网管人员进行管理的。举个形象的例子,Server(服务器)是许多小信箱的集合,就像我们所居住楼房的信箱结构,而客户端就好比是一个人拿着钥匙去信箱开锁取信一样的道理。 POP在网络模型中的层次 大家都知道网络是分层的,而这个分层就好比是一个企业里的组织结构一样。在日常使用电脑过程中,人操作着电脑,人就好比是指挥电脑对因特网操作的首席执行官。当我们打开Foxmail这个邮件软件收取邮件时,Foxmail这个软件就会调用TCP/IP参考模型中的应用层协议—POP协议。 应用层协议建立在网络层协议之上,是专门为用户提供应用服务的,一般是可见的。如利用FTP(文件传输协议)传输一个文件请求一个和目标计算机的连接,在传输文件的过程中,用户和远程计算机交换的一部分是能看到的。而这时POP协议则会指挥下层的协议为它传送数据服务器,最后Foxmail通过一系列协议对话后成功将电子邮件保存到了Foxmail 的收件箱里。TCP/IP参考模型是Internet的基础。和OSI的7层协议比较,TCP/IP参考模型中没有会话层和表示层。通常说的TCP/IP是一组协议的总称,TCP/IP实际上是一个协议族(或协议包),包括100多个相互关联的协议,其中IP(Internet Protocol,网际协议)是网络层最主要的协议;TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)是传输层中最主要的协议。一般认为IP、TCP、UDP是最根本的三种协议,是其它协议的基础。 相信读者了解TCP/IP框架之后,一定会对各层产生一定的兴趣,不过我们对于这个模型的理解也是一步步来的。在这里,我们首先只要知道相应的软件会调用应用层的相应协议,比如Foxmail会调用POP协议,而IE浏览器则会调用DNS协议先将网址解析成IP地址。在

考研计算机统考大纲详解

考研计算机统考大纲 一、数据结构 【考查目标】 1.掌握数据结构的基本概念、基本原理和基本方法。 2.掌握数据的逻辑结构、存储结构及基本操作的实现,能够对算法进行基本的时间复杂度与空间复杂度的分析。 3.能够运用数据结构基本原理和方法进行问题的分析与求解,具备采用C或C++语言设计与实现算法的能力。 一、线性表 (一)线性表的定义和基本操作 (二)线性表的实现 1.顺序存储 2.链式存储 3.线性表的应用 二、栈、队列和数组 (一)栈和队列的基本概念 (二)栈和队列的顺序存储结构 (三)栈和队列的链式存储结构 (四)栈和队列的应用 (五)特殊矩阵的压缩存储 三、树与二叉树 (一)树的概念 (二)二叉树 1.二叉树的定义及其主要特征 2.二叉树的顺序存储结构和链式存储结构 3.二叉树的遍历 4.线索二叉树的基本概念和构造 (三)树、森林 1.树的存储结构 2.森林与二叉树的转换 3.树和森林的遍历 (四)树与二叉树的应用 1.二叉排序树 2.平衡二叉树 3.哈夫曼(Huffman)树和哈夫曼编码 四、图 (一)图的基本概念 (二)图的存储及基本操作 1.邻接矩阵法 2.邻接表法 3.邻接多重表、十字链表

(三)图的遍历 1.深度优先搜索 2.广度优先搜索 (四)图的基本应用 1.最小(代价)生成树 2.最短路径 3.拓扑排序 4.关键路径 五、查找 (一)查找的基本概念 (二)顺序查找法 (三)分块查找法 (四)折半查找法 (五)B树及其基本操作、B+树的基本概念 (六)散列(Hash)表 (七)字符串模式匹配 (八)查找算法的分析及应用 六、排序 (一)排序的基本概念 (二)插入排序 1.直接插入排序 2.折半插入排序 (三)气泡排序(bubblesort) (四)简单选择排序 (五)希尔排序(shellsort) (六)快速排序 (七)堆排序 (八)二路归并排序(mergesort) (九)基数排序 (十)外部排序 (十一)各种内部排序算法的比较 (十二)排序算法的应用 二、计算机组成原理 【考查目标】 1.理解单处理器计算机系统中各部件的内部工作原理、组成结构以及相互连接方式,具有完整的计算机系统的整机概念。 2.理解计算机系统层次化结构概念,熟悉硬件与软件之间的界面,掌握指令集体系结构的基本知识和基本实现方法。 3.能够运用计算机组成的基本原理和基本方法,对有关计算机硬件系统中的理论和实际问题进行计算、分析,并能对一些基本部件进行简单设计;并能对高级程序设计语言(如C语言)中的相关问题进行分析。 一、计算机系统概述 (一)计算机发展历程

写电子邮件的格式范文

写电子邮件的格式范文 电子邮件是Internet上最大的应用。个人利用电子邮件传输私人信件,公司利用它传送商业计划及数据,政府利用它发送公文。下面是我为你带来的,欢迎参阅。 1 亲爱的赵老师: 你好! 这是我第一次给你写信,在第一次见你的时候,我对你的印象是,你一定是一个很幽默的人,可是在相处下来的日子里,我知道了你是一个在教学方面是一丝不苟的人,却在课堂外是一个非常孩子气的人,赵老师我对你的教学方法觉得很满意,可是如果你在上课能把题目讲得更让人理解一些,那上课一定会更有趣,更深动。赵老师,我是一个对英语很感兴趣的人,我对英语的喜欢从一年级就开始了,老师也让我参加过许多活动,可是在这个暑假里,你让我知道了英语成绩好,也不一定什么都懂了,我还有很多要学。 你的教学态度从给我们讲试卷开始,我就知道了你是一个好老师,对同学负责。赵老师,我相信如果你成为一名教师,一定是同学们的好老师,因为你的高度负责,因为你和其他的同学很处得来。 当我知道老师喜欢的和我喜欢的东西一样时,心里很激动,因为周围的同学很少会喜欢黑色和红色,因为他们觉得红色太艳,黑色太阴郁了,所以当我知道老师也喜欢时有点高兴。希望以后如果有缘

再能见面。 祝: 身体健康,天天开心! 2 亲爱的妈妈: 您好! 今天,我利用暑假中的空隙时间,专门给您写一封信,是为了感谢您。感谢您这些年来对我无微不至地关怀和照顾。 妈妈,如果没有您,就没有今天的我!我有时还爱跟您吵架和拌嘴,在此利用写信的机会深深表达我对您的歉意。 记得有一天晚上,我生病了,您和爸爸开着车把我送到医院去看病。 那一天,是您在那里陪伴我一夜,一秒钟都没闭上双眼。那一天,我很想快点好起来,不让您为我那么辛苦了。那一次,由于您的精心照顾,我的身体很快康复了。 自从那次以后,我有时还会主动帮妈妈洗碗,有时也帮妈妈拖地。 妈妈,您辛苦了!我从内心衷心祝福您身体健康,万事如意! 此致 敬礼! 您的好孩子:周靖洋 3

jQuery Ajax 应用实例解析大全

jQuery Ajax应用解析 jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯。 我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到). 1. load( url, [data], [callback] ) :载入远程HTML 文件代码并插入至DOM 中。 url(String) : 请求的HTML页的URL地址。 data(Map) : (可选参数) 发送至服务器的key/value 数据。 callback(Callback) : (可选参数) 请求完成时(不需要是success的)的回调函数。 这个方法默认使用GET 方式来传递的,如果[data]参数有传递数据进去,就会自动转换为POST方式的。jQuery 1.2 中,可以指定选择符,来筛选载入的HTML 文档,DOM 中将仅插入筛选出的HTML 代码。语法形如"url #some > selector"。 这个方法可以很方便的动态加载一些HTML文件,例如表单。 示例代码: $(".ajax.load").load("https://www.doczj.com/doc/7e2752779.html,/QLeelulu/archive/2008/03/30/1130270.html .post", function (responseText, textStatus, XMLHttpRequest){ this;//在这里this指向的是当前的DOM对象,即$(".ajax.load")[0] //alert(responseText);//请求返回的内容 //alert(textStatus);//请求状态:success,error //alert(XMLHttpRequest);//XMLHttpRequest对象 }); 这里将显示结果。 注:不知道为什么URL写绝对路径在FF下会出错,知道的麻烦告诉下。下面的get()和post()示例使用的是绝对路径,所以在FF下你将会出错并不会看到返回结果。还有get()和post()示例都是跨域调用的,发现传上来后没办法获取结果,所以把运行按钮去掉了。 2. jQuery.get( url, [data], [callback] ):使用GET方式来进行异步请求 参数: url(String) : 发送请求的URL地址. data(Map) : (可选) 要发送给服务器的数据,以Key/value 的键值对形式表示,会做为QueryString附加到请求URL中。 callback(Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。 这是一个简单的GET 请求功能以取代复杂$.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用$.ajax。示例代码: $.get("./Ajax.aspx", {Action:"get",Name:"lulu"}, function (data, textStatus){

POP3协议命令原始码及工作原理

POP3协议命令原始码及工作原理 一简介: 1. POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3。脱机模型即不能在线操作,不像IMAP4(netscape支持IMAP4) 2. 当客户机与服务器连接并查询新电子邮件时,被该客户机指定的所有将被下载的邮件都将被程序下载到客户机,下载后,电子邮件客户机就可以删除或修改任意邮件,而无需与电子邮件服务器进一步交互。 3. POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用ASCII码表示。 服务器响应是由一个单独的命令行组成,或多个命令行组成,响应第一行以ASCII文本OK或-ERR指出相应的操作状态是成功还是失败 4. 在POP3协议中有三种状态,认可状态,处理状态,和更新状态。 当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,在完成相应的操作后客户机发出quit命令,则进入更新状态,更新之后最后重返认可状态。如下图 等待连接身份确认quit命令 ——|认可|—————|处理|——————|更新| |__________________________________|

重返认可状态 5. 认可状态的命令语句 一般情况下,大多数现有的POP3客户与服务器执行采用ASCII 明文发送用户名和口令,在认可状态等根据专家观察,这样的理论和现象都是值得各位站长深思的,所以希望大家多做研究学习,争取总结出更多更好的经验! 待客户连接的情况下,客户发出连接,并由命令user/pass对在网络上发送明文用户名和口令给服务器 进行身份确认。一旦确认成功,便转入处理状态。 为了避免发送明文口令的问题,有一种新的认证方法,命令为APOP,使用APOP,口令在传输之前被加密。 当第一次与服务器连接时,POP3服务器向客户机发送一个ASCII 码问候,这个问候由一串字符组成对每个客户机是唯一的,与当时的时间有关,然后,客户机把它的纯文本口令附加到从服务器接收到的字符串之后,然后计算出结果字符串的MD5单出函数消息摘要,客户机把用户名与MD5消息摘要作为APOP命令的参数一起发送出去。 目前,大多数windows上的邮件客户软件不支持APOP命令,qpopper支持。 6. POP3命令码如下: 命令参数状态描述 ------------------------------------------

Wireshark抓包分析POP3和SMTP协议

Wireshark抓包分析POP3和SMTP协议 一、实验目的 1.初步掌握Wireshark的使用方法,熟悉抓包流程; 2.通过对Wireshark抓包实例进行分析,加强对POP3协议和 SMTP协议的理解; 3.培养动手实践能力和自主学习自主探究的精神。 二、实验要求 利用Wireshark软件抓包,得到邮箱登录的信息和发送邮件的信息,并根据所抓包对POP3协议和SMTP协议进行分析。 三、实验环境 1.系统环境:Windows 8专业版 2.邮件接收:Foxmail 6正式版 四、Wireshark:实验过程 (一)邮箱登录及邮件接收过程(POP3协议) 1.POP3协议简介[1] POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮箱服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本机主机上,同时根据客户端的操作删除或保存在邮箱服务器上的邮件。而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。 POP3协议是TCP/IP协议族中的一员,由RFC 1939 定义。本协

议主要用于支持使用客户端远程管理在服务器上的电子邮件。 2.实验过程 (1)准备工作 申请一个126邮箱 安装并配置Foxmail,将接收和发送邮件的服务器分别 设置为POP3服务器和SMTP服务器 在安装好的Foxmail上添加申请到的126邮箱账户 添加后的邮箱信息 (2)打开Wireshark软件,选择正在联网的网卡,开始抓包。 (3)打开Foxmail,选择邮箱账号登录,点击左上角收取,邮箱开始连接服务器。

【优质】公司内部邮件格式范文

公司内部邮件格式范文 公司内部邮件格式 一) 邮件主题 ★与公司内部同事沟通的邮件格式为:部门-发件人姓名-事件-日期 例如:企划部-焦琼琼-工作计划-14.9.16 ★与其他公司工作上的沟通邮件格式为:公司名称-事件-日期 例如:北京筑基企业管理咨询有限公司-旭亚威合同-13.10.16 (二) 邮件内容 邮件正文由以下几个部分组成:称呼、正文、结束语、附件、署名。 1、称呼 称呼是写信人对收件人的称呼用语。第一行顶格书写,使用姓氏职位为称呼,称呼后用逗号间隔敬语。 例如:徐总,您好:; 如果为群发收件人可直接称呼为Dear all 注:在进行邮件回复时,若未将发件人加入通讯录通常会出现对方邮箱名作为邮 件的称呼,为避免此情况可先将收件人地址添加至通讯录并标注,也利于今后的沟通与联系。 2、正文 位置在称呼语下面隔一行,是信的核心部分。因此要求正文层次分明、简单易懂。每段文字第一行的第一个文字向右缩两个汉字,每段第二行从左面顶格写起。 正文内容以列表的形式概述工作汇报的内容,默认文字格式。每项内容后换行空两格的书写。 ★对于工作汇报类邮件 首先、表明工作是否完成,已完成的简单描述完成情况。

其次、未完成的描述执行进度,未执行的描述为何未执行,需要特定人配合执行的需使用红色字体加粗等重点标注的形式书写。 ★对于数据汇报类邮件 首先、简述数据的内容并辅以简要的分析。 其次、针对数据异常的部分,需使用红色字体加粗等重点标注的形式书写。 3、结束语 结束语在正文之后,空一行另起一段书写,以表尊重。 4、附件 信件如果有附件,可在邮件内容书写完毕后空一行注明,以注字加冒号起"附件一、附件二......"依序列出附件内容,并在文字底下加横线,以引起收信人的注意,使收信人便于在读信之前就可了解信中的主要内容。附件文件名的格式统一为:日期-姓名-附件内容 5、署名 邮件的结尾空一行顶格标注发件姓名,换行顶格再标注发件日期。 注:正文为邮件不可或缺的一部分,即使使用附件内容的,也应根据附件内容简述汇报的内容,对于需要特定人员配合执行或数据异常的文字描述采用加粗标红 的格式。 (三) 邮件地址栏 ★收件人:邮件的接收人,并对该邮件做回复、指示。 ★抄送:将邮件同时发送给收件人以外的人,用户所写的邮件抄送一份给别人, 收到的人可回(邮件)可不回(邮件)。 注:正确理解并填写收件人和抄送的邮件地址有助于邮件接收者明确需要各自的 职责。 (四) 邮件统一格式 ★字体:除特殊标注需着重注意的文字内容外(可加粗、字体颜色彩红色),邮件内容字体统一为:宋体9号字(不同邮箱工具对字体大小的定义不同,应用常规 正文字体大小均可),颜色为黑色。 ★开头语和正文之间,按段分隔。分隔距离为一行。

常用函数大全

常用函数大全 mysql_affected_rows
mysql_affected_rows — 取得前一次 MySQL 操作所影响的记录行数 mysql_fetch_array —从结果集中取得一行作为关联数组或数字数组或二者兼 有:
mysql_fetch_array($result, MYSQL_NUM) , MYSQL_NUM 可用 MYSQL_BOTH 或
MYSQL_ASSOC 代替,也可以不写,默认为 MYSQL_BOTH
mysql_fetch_row — 从结果集中取得一行作为枚举数组: mysql_fetch_row($result); mysql_fetch_assoc($result)
mysql_fetch_row()从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果 的列储存在一个数组的单元中,偏移量从 0 开始。 依次调用 mysql_fetch_row()将返回结果集中的下一行,如果没有更多行则返回 FALSE。 mysql_fetch_assoc — 从结果集中取得一行作为关联数组 :
mysql_fetch_assoc() 和用 mysql_fetch_array() 加上第二个可选参数 MYSQL_ASSOC 完全相同。它 仅仅返回关联数组。这也是 mysql_fetch_array()起初始的工作方式。如果在关联索引之外还需要数字 索引,用 mysql_fetch_array()。 如果结果中的两个或以上的列具有相同字段名,最后一列将优先。要访问同名的其它列,要么用 mysql_fetch_row()来取得数字索引或给该列起个别名。参见 mysql_fetch_array() 例子中有关别名说 明。 有一点很重要必须指出,用 mysql_fetch_assoc()并不明显 比用 mysql_fetch_row()慢,而且还提供了 明显更多的值。
mysql_query()
仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,
如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句,mysql_query()在执行成功时返回 TRUE,出错时返回 FALSE。非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。这并不说明 任何有关影响到的或返回的行数。 很有可能一条查询执行成功了但并未影响到或并未返回任何行。

pop3-imap-exchange协议

Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层(Applicationlayer),它包含所有高层的协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等。 HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。这就是你为什么在浏览器中看到的网页地址都是以“http://”开头的原因。 POP3(Post Office Protocol 3) POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3。,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。 IMAP(Internet消息访问协议)是与POP3对应的另一种协议,为美国斯坦福大学在1986年开始研发的多重邮箱电子邮件系统。它能够从邮件服务器上获取有关E-mail的信息或直接收取邮件,具有高性能和可扩展性的优点。IMAP 为很多客户端电子邮件软件所采纳,如OutlookExpress、NetscapeMessenger 等,支持IMAP的服务器端的软件也越来越多,如CriticalPath、Eudora、iPlanet、Sendmail等。 POP3 和IMAP4 功能概述 这两个协议具有下列优点和局限性: ?POP3 POP3 用于支持脱机邮件处理。使用 POP3 时,如果未将客户端设置为在服务器上保留邮件,电子邮件将从服务器中删除并存储在本地POP3 客户端上。这会使数据管理和安全责任都转由用户负责。POP3 不提供高级协作功能,例如日历、联系人和任务。 ?IMAP4 IMAP4 可提供脱机和联机访问功能,但与POP3 一样,IMAP4 不提供高级协作功能,例如日历、联系人和任务。 POP3 和IMAP4 无法用于将邮件从客户端应用程序发送到电子邮件服务器。使用 POP3 和IMAP4 发送邮件的电子邮件应用程序依赖SMTP 协议来发送邮件。会在每个中心传输服务器上自动创建用于从使用POP3 或IMAP4 的客户端应用程序接收电子邮件提交的连接器。有关连接器的详细信息,请参阅了解接收连接器。

网络协议手册——HTTP基础

HTTP协议基础 在日常工作和生活中,HTTP是我们经常用到的协议之一。很多内容需要记录下来以便平时查阅。下面就进入正题: HTTP是什么? HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF (Internet Engineering Task Force)合作的结果,最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。 HTTP在网络模型中的位置

HTTP是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP 的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。 URL介绍 URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下: schema://host[:port#]/path/.../[?query-string][#anchor] scheme 指定低层使用的协议(例如:http, https, ftp) host HTTP服务器的IP地址或者域名 port# HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明。 path 访问资源的路径 query-string 发送给http服务器的数据 anchor- 锚 Request请求

试验七 电子邮件协议

试验七电子邮件协议(SMTP, POP3和IMAP) 练习一:使用Outlook发送电子邮件 1. 主机B启动协议分析器进行数据捕获,并设置过滤条件(提取SMTP协议)。 2. 主机A打开邮件工具Outlook Express并设置一个邮件帐号,邮件接收服务器为POP3, 编辑并发送一封电子邮件给主机A。注:Outlook使用方法及具体配置见附录 3. 察看主机B捕获的数据,保存会话命令(方法:会话交互视图/单击右键/保存会话命令菜单,保存为Smtp.zdt)。 (1)SMTP使用的TCP端口是25。 (2)找出传输用户帐号及密码的数据包,能不能看到用户密码?答:能。 (3)结合Smtp.zdt的SMTP传输过程,填写下表。 表15-5 实验结果 ●邮件的内容首部包括一些关键信息,如From、Subject、To等,请分析邮件首部格式。 ●分析在邮件的首部字段中有关MIME的信息。 练习二:使用Outlook接收电子邮件 本练习将主机A和B作为一组,主机C和D作为一组,主机E和F作为一组。现仅以主机A、B所在组为例,其它组的操作参考主机A、B所在组的操作。 1. 使用POP3协议接收 (1)主机B启动协议分析器进行数据捕获,并设置过滤条件(提取POP3协议)。

(2)主机A接收练习一中发送的邮件。 (3)察看主机B捕获的数据,保存会话命令(方法:会话交互视图/单击右键/保存会话命令菜单,保存为POP3.zdt)。 ● POP3使用的TCP端口是110 。 ●找出传输用户帐号及密码的数据包,能不能看到用户密码? 答:能。 ●结合POP3.zdt的内容,分析POP3协议的工作过程并画出邮件接收过程简图,比较它与SMTP协议的不同点。 答:POP3是POP(电子邮局传输协议)的第三个版本,是规定了怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是Internet电子邮件的第一个离线协议标准。简单点说,POP3就是一个简单而实用的邮件信息传输协议。 SMTP(简单邮件传输协议)是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP服务器就是遵循SMTP协议的发送邮件服务器。 ●找到接收邮件内容的报文(命令RETR的响应报文),察看是否与发送的内容一致? 答:一致。 使用IMAP协议接收 (1)主机B重新进行数据捕获,并设置过滤条件(提取IMAP协议)。 (2)主机A使用Outlook Express设置一个邮件账号,邮件接收服务器为IMAP。发送一封邮件并对其接收。 (3)察看主机B捕获的数据,保存会话命令(会话交互视图/单击右键/保存会话命令菜 2.单,保存为IMAP.zdt)。 ● IMAP使用的TCP端口是143 。 ●找出传输用户帐号及密码的数据包,能不能看到用户密码? 答:能。 ●结合IMAP.zdt的内容,分析IMAP协议的工作过程并画出邮件接收过程简图,比较它与POP3协议的异同点。 答:POP3提供了快捷的邮件下载服务,用户可以利用POP3把邮箱里的信下载到PCh上进行离线阅读。一旦邮件进入PC的本地硬盘,就可以选择把邮件从服务器上删除,然后脱离Internet的连接并选择在任何时候阅读已经下载的邮件。 IMAP同样提供了方便的邮件下载服务,让用户服务能进行离线阅读,但IMAP能完成的却远远不只这些。首先,IMAP提供的摘要浏览功能可以让你阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。也就是说,你不必等所有的邮件都下载完毕后才知道空间邮件里都有些什么。如果你根据摘要信息就可以决定某些邮件对你毫无用处,你就可以直接在服务器上把这些邮件删除掉,而不必浪费你宝贵的上网时间。 练习三:使用TCP工具和SMTP命令实现邮件发送 本练习将主机A和B作为一组,主机C和D作为一组,主机E和F作为一组。现仅以主机A、

公司内部邮件格式范文

精心整理 公司内部邮件格式范文 公司内部邮件格式 一)邮件主题 ★与公司内部同事沟通的邮件格式为:部门-发件人姓名-事件-日期 ★与其他公司工作上的沟通邮件格式为:公司名称-事件-日期 例如:北京筑基企业管理咨询有限公司- (二)邮件内容 1、称呼 称呼是写信人对收件人的称呼用语。 语。 注:为避免 2、正文 每段文字第一行 ★对于工作汇报类邮件 首先、表明工作是否完成,已完成的简单描述完成情况。 其次、未完成的描述执行进度,未执行的描述为何未执行,需要特定人配合执行的需使用红色字体加粗等重点标注的形式书写。 ★对于数据汇报类邮件 首先、简述数据的内容并辅以简要的分析。

其次、针对数据异常的部分,需使用红色字体加粗等重点标注的形式书写。 3、结束语 结束语在正文之后,空一行另起一段书写,以表尊重。 4、附件 信件如果有附件,可在邮件内容书写完毕后空一行注明,以注字加冒号起"附件一、附件二......"依序列出附件内容,并在文字底下加横线,以引起收信人的注意,使收信人便于在读信之前就可了解信中的主要内容。附件文件名的格式统一为: 日期-姓名-附件内容 5、署名 注:正文为邮件不可或缺的一部分,对(三)邮件地址栏 (邮件)可不回( (四) ),邮件内容字体统一为:宋体9号字),颜色为黑色。 ★回复时收件人只填发邮件的人,其他均为抄送。 ★附件文件名的格式统一为:日期-姓名-附件内容 公司内部邮件范文 邮件标题:市场部-蔡永-梦幻新区4月交易数据汇报-12.5.1 叶总、王总,你们好: 4月份梦幻新区的定单发布数量为1000单,成交495笔,环比3月份(500单)发布单数量上升100%和成交量笔数(450)上升10%,发布单数与成交笔数的增长比率严重不符。请订单审核部的王总审查下是否存在重复发单的情况及重复发单的数量。

Sip_响应状态码_对照_详解(新)

Sip 响应状态码对照详解 SIP应答消息状态码 与功能 类型状态码状态说明 临时应答(1XX) 100 Trying 正在处理中 180 Ringing 振铃 181 call being forwarder 呼叫正在前向 182 queue 排队 181* session progress 会话进行 会话成功(2XX) 200 OK 会话成功 重定向(3XX) 300 multiple 多重选择 301 moved permanently 永久移动 302 moved temporaily临时移动 305 use proxy 用户代理 380 alternative service 替代服务 请求失败(4XX) 400 bad request 错误请求 401unauthorized 未授权 402 payment required 付费要求 403 forbidden 禁止 404 not found 未发现 405 method no allowed 方法不允许 406 not acceptable 不可接受 407 proxy authentication required 代理需要认证408 request timeout 请求超时 410 gone 离开 413 request entity too large 请求实体太大 414 request-url too long 请求URL太长 415 unsupported media type 不支持的媒体类型416 unsupported url scheme 不支持的URL计划420 bad extension 不良扩展 421 extension required 需要扩展 423 interval too brief 间隔太短 480 temporarily unavailable 临时失效 481 call/transaction does not exist 呼叫/事务不存在482 loop detected 发现环路 483 too many hops 跳数太多 484 address incomplete 地址不完整 485 ambiguous 不明朗 486 busy here 这里忙 487 request terminated 请求终止 488 not acceptable here 这里请求不可接受 491 request pending 未决请求 493 undecipherable 不可辨识

公司推广邮件范文_公司邮件格式范文

公司推广邮件范文_公司邮件格式范文 公司推广邮件范文1 尊敬的xx客户: 感谢您长期以来对我公司的关心与惠顾!目前因网络使用客户激增迫使我们要对网络进行扩容与改进,以方便客户,提供最有效的服务。您有什么意见和建议敬请提出。我公司的E-mail地址:xxxxx 长城宽带网络公司客户服务部 xx年x月x日 公司推广邮件范文2 xxx, 您好,我是北京雅致人生管理顾问有限公司的王艳。很高兴能够认识您,并有幸将我们公司介绍给您。我们公司培训主要以素质技能技巧为主,曾经成功的为IBM/HP/SUMSUNG/微软、中海油、大唐移动、北京移动、信息产业部电信研究院服务过,欢迎您访问我们公司的网址:,对我们公司有更多的了解。 附件是我们公司擅长的培训课程及讲师简历。请您查收。 如有任何问题或者建议请您随时与我联系! 希望我们能达成互补,在未来有合作的机会! 感谢您对我工作的支持! 祝您工作开心快乐! 王艳 xxx有限公司 公司推广邮件范文3 XXX先生/女士,您好 新年快乐! 为庆祝公司成立两周年,本公司特地推出两款产品以成本价促销,回馈新老客户两年来的支持! 一,促销产品型号 A:ZWD120W(55*3W)LED植物灯 (波长R630nm,B460nm,O:610nm,W:6500K,比例可选8:1,7:2,7:1:1,6:1:1:1使用其他灯珠价格另议。) B:SZD120W(55*3W)LED水族灯 (波长,色温B:460nm,W:120xxK,白光色温最高可以做到18000K,比例:B:W=25:30,B:W=30:25) ,灯珠发光角度可选60/90/120° 二,促销价A:70USD,B:86USD 原件A:93USD,B:105USD 三,促销时间:20xx年1月1日—20xx年-2月15日 四,售后服务:1)本公司所有产品自购买日起质保两年,全球保修,如果产品本身出现质量问题,本公司负责所有的费用。 2)非本公司的产品,我们也会安排工程师指导和协助维修。 五,产品制作细节:所有配件经品质部检验后投入生产,主要配件之间是拔

IIS mime类型大全

我的淘宝店https://www.doczj.com/doc/7e2752779.html, application/vnd.lotus-1-2-3 3gp video/3gpp aab application/x-authoware-bin aam application/x-authoware-map aas application/x-authoware-seg ai application/postscript aif audio/x-aiff aifc audio/x-aiff aiff audio/x-aiff als audio/X-Alpha5 amc application/x-mpeg ani application/octet-stream asc text/plain asd application/astound asf video/x-ms-asf asn application/astound asp application/x-asap asx video/x-ms-asf au audio/basic avb application/octet-stream avi video/x-msvideo awb audio/amr-wb bcpio application/x-bcpio bin application/octet-stream bld application/bld bld2 application/bld2 bmp application/x-MS-bmp bpk application/octet-stream bz2 application/x-bzip2 cal image/x-cals ccn application/x-cnc cco application/x-cocoa cdf application/x-netcdf cgi magnus-internal/cgi chat application/x-chat class application/octet-stream clp application/x-msclip cmx application/x-cmx co application/x-cult3d-object cod image/cis-cod cpio application/x-cpio cpt application/mac-compactpro

【秘书基础】公司发邮件范文格式

公司发邮件范文格式 新春佳节渐近,为欢度中华民族的传统佳节,使全体人员能够开开心心地过上一个欢乐、祥和的20xx年春节,尽可能的与家人一起享受节日的欢乐和喜悦;结合生产情况,经公司研究决定: 20xx春节放假安排通知:**********************8。 回家的员工建议通过各种途径提前预订好往返的车票,以免到时"一票难求",计算好返乡的行程安排,并做好回家的理财准备; 同时,公司要求所有的员工必须在*月*日到达深圳,确保*月*日能够正常上班;届时公司一律不接受电话请假,逾期未到者按旷工处理。 为了让不回家的员工过一个欢乐祥和的春节,同时也方便公司在春节期间的食宿安排和管理工作的开展,特通告好下: 1、决定不回家并留厂的员工(包括外宿员工)如果仍未登记的员工,请尽快到各部门主管/文员处登记,登记时注明员工姓名及部门/级别以及是否在厂内食宿,是享用管理餐还是员工餐等。 2、各部门文员/主管请将增加的统计名单于元月XX日前将留厂人中名单交到行政部 3、行政部将根据留厂人员情况安排用餐及住宿保安相关事宜,请员工决定后再行登记 4、所有留厂员工在春节期间用餐不再扣除伙食费,由公司全额承担,除夕夜与大年初一中餐加餐。

5、留厂员工可以自发组织唱歌、跳舞、游戏等娱乐活动,不得在厂内进行赌博、吸毒、酗酒、打架斗殴等违法违纪活动,违者将按厂规处理。 **有限责任公司 20xx年1月*日 一年一度的农历春节已经近在眼前,在此先预祝全体员工新春愉快,万事如意!20xx年春节公司放假安排如下: 一、放假时间 20xx春节放假安排通知:******************。 (因工作需要,财务部工作人员上班时间为20xx年*月*日)。 二、留守值班人员安排 值班人员: 姓名及电话: 值班时间:20xx年1月*日至20xx年*月*日。 工资待遇:月工资×200% 节日补贴:**元 伙食补贴:**元 三、注意事项 放假期间,请大家一定要注意人身安全,并按时返回。如遇非人为原因无法按时返回,请及时向主管部门告假。

相关主题
文本预览
相关文档 最新文档