2012-04-24, 10:53 | #1 (permalink) |
高级会员
注册日期: 2011-07-06
帖子: 109
|
电子邮件的标准格式(RFC822)
除了由一个Internet用户传递给另一个用户的信息之外,电子邮件中还必须包含附加的服务信息。SMTP服务器利用这些信息来传递邮件,而客户端的邮件接收软件则利用这些信息来对邮件进行分类。这些附加的数据用信头的形式被包含在邮件主体中。邮件正文则紧随其后。如果你是用Outlook Express,用你的鼠标右键点一封邮件,然后选取“属性”,你就可以看到信头是什么样的了。如下图:
在“详细资料”标签页中的文本就是邮件的信头。如果你想看邮件的所有内容,只须点选一下“邮件源文件。。。”按钮。对普通用户而言,邮件信头一点都不吸引人。但是如果你想开发互联网应用程序的话,你就不能不对此有所了解。如果你不遵守下面这些简单的规则,只能导致程序的失败。 在这里你能找到建立信头的规则,信头每个字段的目的,所运用的语法以及数据格式等等内容。RFC822是一个大文件,在这里我们无法包含该文件的所有细节。你可以把本文的内容当作是一个快速入门,在多数情况下这已经很足够了。想知道该文件的所有内容,就把这个文件下载回去慢慢咀嚼吧。 每封邮件都有两个部分:信头和主体。邮件主体就是你发送给收件人的数据(包括文本或文件)信头是一系列的字段(Fields)。一个空字符串将主体同信头分开,也就是说一个空字符串标记了信头的结束。在VB中,空字符串可写成vbCrLf + vbCrLf。 通过InStr函数你可以很方便地把它找出来。例如: intBorderLine = InStr(1, strMessage, vbCrLf + vbCrLf) 信头部分的字段可分为两类。一类是由你的电子邮件程序产生的,另一类是邮件通过SMTP服务器时被加上的。在所有被SMTP服务器加上的字段中,对我们而言最重要的是Message-Id字段。这个字段是由你传向的SMTP服务器加上的。这个一个唯一的ID号。你可用这个号码作为邮件的编号。 下表列出了可由用户的邮件程序控制的信头字段。这并不意味着所有的字段都是必须的。实际上可以忽略形成信头这一步骤而只发送正文。让你的SMTP服务器为你加上最起码的必需字段。 信头字段 目的 From 邮件作者 Sender 发信人 Reply-To 回邮地址 To 收信人地址 CC 另一个收信人地址 BCC 收信人地址,但这个收信人看不到其它收信人的地址。 Subject 主题 Comments 备注 Keywords 关键字,用来进一步搜索邮件 In-Reply-To 被当前邮件回复的邮件的ID References 几乎同In-Reply-To一样 Encrypted 加密邮件的加密类型 Date 发信日期 邮件信头字段 建立信头的规则很简单。用冒号将字段名同字段值分开。每个字段从一个新的字符串开始,但是字段值可能会占用几个字符串,这取决于SMTP服务器对字符串长度的限制。 不幸的是,RFC822推荐的日期和时间格式同VB不兼容。当我们编辑邮件时,我们得用FORMAT函数例如: Format(Now,"ddd, dd mmm yyyy hh:mm:ss") %26amp; " GMT +0400" 尽管如此,为了将Internet的日期/时间转换成VB的日期类型,你有必要开发你自己的函数或是调用WinInet API中的InternetTimeToSystemTime函数。如果想知道更多这方面的规定,读读RFC822吧。 除了标准字段外,信头还可以包含用户自定义的字段。这些用户自定义的字段名必须由X开始。例如: X-Mailer: Microsoft Outlook Express 4。72。2106。 |