跳到主要内容

附录 A. 示例消息

本节展示若干消息示例. 这些示例旨在帮助实现本规范, 但不应被视为规范性内容; 也就是说, 尽管本节中的示例经过了仔细审阅, 但如果这些示例与本文档第 3 节和第 4 节所述语法之间存在冲突, 应当以那两节中的语法为准.

在本文档的文本版本中, 本节中的消息以 "----" 行分隔. "----" 行不是消息本身的一部分.

A.1. 寻址示例​

以下是两个人之间可能发送的消息示例.

A.1.1. 一个人以简单寻址向另一个人发送的消息​

这可以称为一条规范消息. 它有一个作者 John Doe, 一个收件人 Mary Smith, 一个主题、日期、一个消息标识符以及正文中的一段文本消息.

----
From: John Doe <[email protected]>
To: Mary Smith <[email protected]>
Subject: Saying Hello
Date: Fri, 21 Nov 1997 09:55:06 -0600
Message-ID: <[email protected]>

This is a message just to say hello.
So, "Hello".
----

如果实际上是 John 的秘书 Michael 发送了该消息, 尽管 John 是作者且对该消息的回复应当回到 John 那里, 那么就要使用 sender 字段:

----
From: John Doe <[email protected]>
Sender: Michael Jones <[email protected]>
To: Mary Smith <[email protected]>
Subject: Saying Hello
Date: Fri, 21 Nov 1997 09:55:06 -0600
Message-ID: <[email protected]>

This is a message just to say hello.
So, "Hello".
----

A.1.2. 不同类型的邮箱​

这条消息在目标字段中包含多个地址, 并且使用了若干不同形式的地址.

----
From: "Joe Q. Public" <[email protected]>
To: Mary Smith <[email protected]>, [email protected], Who? <[email protected]>
Cc: <[email protected]>, "Giant; \"Big\" Box" <[email protected]>
Date: Tue, 1 Jul 2003 10:52:37 +0200
Message-ID: <[email protected]>

Hi everyone.
----

注意, Joe Q. Public 和 Giant; "Big" Box 的显示名需要用双引号括起来, 因为前者包含句点, 后者同时包含分号和双引号字符 (双引号字符以 quoted-pair 构造出现). 相反, Who? 的显示名可以不加双引号, 因为问号在 atom 中是合法的. 另请注意, [email protected] 和 [email protected] 完全没有关联的显示名, 并且 [email protected] 使用了不带尖括号的更简单地址形式.

A.1.3. 组地址​

----
From: Pete <[email protected]>
To: A Group:Ed Jones <[email protected]>,[email protected],John <[email protected]>;
Cc: Undisclosed recipients:;
Date: Thu, 13 Feb 1969 23:32:54 -0330
Message-ID: <[email protected]>

Testing.
----

在这条消息中, "To:" 字段有一个名为 "A Group" 的组收件人, 其中包含 3 个地址; "Cc:" 字段有一个名为 Undisclosed recipients 的空组收件人.

A.2. 回复消息​

以下是一系列三条消息, 它们构成 John 与 Mary 之间的一段会话线程. John 先向 Mary 发送一条消息, Mary 接着回复 John 的消息, 然后 John 回复 Mary 的回复消息.

请特别注意每条消息中的 "Message-ID:"、"References:" 和 "In-Reply-To:" 字段.

----
From: John Doe <[email protected]>
To: Mary Smith <[email protected]>
Subject: Saying Hello
Date: Fri, 21 Nov 1997 09:55:06 -0600
Message-ID: <[email protected]>

This is a message just to say hello.
So, "Hello".
----

发送回复时, Subject 字段通常被保留, 但按照第 3.6.5 节所述在前面加上 "Re: ".

----
From: Mary Smith <[email protected]>
To: John Doe <[email protected]>
Reply-To: "Mary Smith: Personal Account" <[email protected]>
Subject: Re: Saying Hello
Date: Fri, 21 Nov 1997 10:01:10 -0600
Message-ID: <[email protected]>
In-Reply-To: <[email protected]>
References: <[email protected]>

This is a reply to your hello.
----

请注意上面这条消息中的 "Reply-To:" 字段. 当 John 回复上面 Mary 的消息时, 回复应当发送到 "Reply-To:" 字段中的地址, 而不是 "From:" 字段中的地址.

----
To: "Mary Smith: Personal Account" <[email protected]>
From: John Doe <[email protected]>
Subject: Re: Saying Hello
Date: Fri, 21 Nov 1997 11:00:00 -0600
Message-ID: <[email protected]>
In-Reply-To: <[email protected]>
References: <[email protected]> <[email protected]>

This is a reply to your reply.
----

A.3. 重发消息​

先用那条已被多次用作示例的消息:

----
From: John Doe <[email protected]>
To: Mary Smith <[email protected]>
Subject: Saying Hello
Date: Fri, 21 Nov 1997 09:55:06 -0600
Message-ID: <[email protected]>

This is a message just to say hello.
So, "Hello".
----

假设 Mary 收到这条消息后, 希望把消息副本发送给 Jane, 并且满足: (a) 该消息看起来像是直接来自 John; (b) 如果 Jane 回复该消息, 回复应当回到 John; (c) 所有原始信息 (例如该消息最初发送给 Mary 的日期、消息标识符和原收件人) 都得以保留. 在这种情况下, 重发字段被前置到消息:

----
Resent-From: Mary Smith <[email protected]>
Resent-To: Jane Brown <[email protected]>
Resent-Date: Mon, 24 Nov 1997 14:22:01 -0800
Resent-Message-ID: <[email protected]>
From: John Doe <[email protected]>
To: Mary Smith <[email protected]>
Subject: Saying Hello
Date: Fri, 21 Nov 1997 09:55:06 -0600
Message-ID: <[email protected]>

This is a message just to say hello.
So, "Hello".
----

如果 Jane 又希望把这条消息重发给另一个人, 她会在上述内容之前加上自己的一组重发头部字段并发送. (注意, 为简洁起见, 未显示跟踪字段.)

A.4. 带跟踪字段的消息​

当消息按 [RFC5321] 所述经由传输系统发送时, 跟踪字段会被前置到消息. 以下示例展示了这些跟踪字段可能的样子. 注意第一条中有一些折叠空白, 因为这些行可能很长.

----
Received: from x.y.test
by example.net
via TCP
with ESMTP
id ABC12345
for <[email protected]>; 21 Nov 1997 10:05:43 -0600
Received: from node.example by x.y.test; 21 Nov 1997 10:01:22 -0600
From: John Doe <[email protected]>
To: Mary Smith <[email protected]>
Subject: Saying Hello
Date: Fri, 21 Nov 1997 09:55:06 -0600
Message-ID: <[email protected]>

This is a message just to say hello.
So, "Hello".
----

A.5. 空白、注释与其他怪异之处​

空白 (包括折叠空白) 和注释可以插入字段的许多记号之间. 以 A.1.3 中的示例为例, 可以把空白和注释插入所有字段.

----
From: Pete(A nice \) chap) <pete(his account)@silly.test(his host)>
To:A Group(Some people)
:Chris Jones <c@(Chris's host.)public.example>,
[email protected],
John <[email protected]> (my dear friend); (the end of the group)
Cc:(Empty list)(start)Hidden recipients :(nobody(that I know)) ;
Date: Thu,
13
Feb
1969
23:32
-0330 (Newfoundland Time)
Message-ID: <[email protected]>

Testing.
----

上面的示例在美学上并不令人愉快, 但完全合法. 特别注意: (1) "From:" 字段中的注释 (其中有一个 ")" 字符作为 quoted-pair 的一部分出现); (2) "To:" 字段中 ":" 之后缺失的空白, 以及组名之后的注释和折叠空白、Chris Jones 的地址注释中的特殊字符 (".")、以及 "[email protected]," 前后的折叠空白; (3) "Cc:" 字段中多个且嵌套的注释, 以及紧跟在 "Cc" 之后 ":" 后面的注释; (4) 日期字段中的折叠空白 (但除结尾处外没有注释) 以及缺失的秒数; (5) "Message-ID:" 字段中标识符之前 (但不在其中) 的空白.

A.6. 已过时的形式​

以下是本文档第 4 节所述过时 (即 "MUST NOT generate") 语法元素的示例.

A.6.1. 过时的寻址​

注意下面示例中 Joe Q. Public 周围缺少引号, Mary Smith 的地址中出现的 route, "To:" 字段中出现的两个逗号, 以及 jdoe 地址中 "." 周围的空格.

----
From: Joe Q. Public <[email protected]>
To: Mary Smith <@node.test:[email protected]>, , jdoe@test . example
Date: Tue, 1 Jul 2003 10:52:37 +0200
Message-ID: <[email protected]>

Hi everyone.
----

A.6.2. 过时的日期​

下面这条消息使用了过时的日期格式, 包括非数字时区和两位数年份. 注意, 尽管缺少 day-of-week, 但这并不特定于过时语法; 它在当前语法中也是可选的.

----
From: John Doe <[email protected]>
To: Mary Smith <[email protected]>
Subject: Saying Hello
Date: 21 Nov 97 09:55:06 GMT
Message-ID: <[email protected]>

This is a message just to say hello.
So, "Hello".
----

A.6.3. 过时的空白与注释​

空白和注释可以出现在比当前语法中多得多的元素之间. 此外, 完全由空白组成的折叠行也是合法的.

----
From : John Doe <jdoe@machine(comment). example>
To : Mary Smith
__
<[email protected]>
Subject : Saying Hello
Date : Fri, 21 Nov 1997 09(comment): 55 : 06 -0600
Message-ID : <1234 @ local(blah) .machine .example>

This is a message just to say hello.
So, "Hello".
----

请特别注意 "To:" 字段的第二行. 它以两个空格字符开头. (注意, "__" 表示空格.) 因此, 按照第 4.2 节所述, 它被视为折叠的一部分. 另外, 地址、日期和消息标识符中各处出现的注释和空白都是过时语法的一部分.