📄 rfc724.txt
字号:
These fields will be referred to as structured fields. Examples include fields containing dates and addresses. Other fields, such as the subject field, are regarded simply as a single line of text. 3) Field names To aid in the creation and reading of <field-name>s, the free insertion of <linear-white-space> characters is allowed in reasonable places. Rather than obscuring the syntax specification for <field-name> with the explicit syntax for these <linear-white-space> characters, the existence of a simple "lexical" analyzer is assumed. The analyzer reinterprets the unfolded text which comprises the <field-name> as a sequence of <atoms> separated by <linear-white-space> characters. The field name may be conveniently represented by the sequence of these atoms, separated by a single ASCII space character. II. Standard for the Format of Messages / 11 B. Syntax 1. Lexical Analysis 4) Field bodies To aid in the creation and reading of structured fields, the free insertion of <linear-white-space> characters is allowed in reasonable places. Rather than obscuring the syntax specifications for these structured fields with explicit syntax for these <linear-white-space> characters, the existence of another simple "lexical" analyzer is assumed. It provides an interpretation of the unfolded text comprising the body of the field as a sequence of lexical symbols. These include - individual special characters - quoted strings - comments - atoms The first three symbols are self-delimiting. Atoms are not; they therefore are delimited by the self-delimiting symbols and by <linear-white-space>. So, for example, the folded body of an address field ":sysmail"@ Some-Host, Muhammed(I am the greatest)Ali at WBA is analyzed into the following lexical symbols and types: ":sysmail" quoted string @ special Some-Host atom , special Muhammed atom (I am the greatest) comment Ali atom at atom WBA atom b. Formal Definition <field> ::= <field-name> ":" <field-body> <field-name> ::= <atom> | <atom> <field-name> <field-body> ::= <field-body-contents> | <field-body-contents> <crlf> <linear-white-space-char> <field-body> II. Standard for the Format of Messages / 12 B. Syntax 1. Lexical Analysis <field-body-contents> ::= <the TELNET ASCII characters making up the <field-body>, as defined in the following sections, and consisting of combinations of <atom>, <quoted-string>, <text-line>, and <specials> tokens> <atom> ::= <a sequence of one or more TELNET ASCII alpha-numeric or graphics characters, excluding all control characters (those characters with a decimal value less than 33 or equal to 127) and <delimeters> > <quoted-string> ::= <double quote mark ("), decimal 34> <a sequence of one or more TELNET ASCII characters, where two adjacent quotes are treated as a single quote and part of the string> <"> <text-line> ::= <a sequence of one or more TELNET ASCII characters excluding <cr> and <lf> > <message-text> ::= <a sequence of zero of more TELNET ASCII characters> <delimeters> ::= <specials> | <comment> | <linear-white-space> | <crlf> <specials> ::= "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | <"> <comment> ::= "(" <TELNET ASCII characters, except <crlf> > ")" <linear-white-space>::= <linear-white-space-char> | <linear-white-space-char> <linear-white-space> <linear-white-space-char>::= <space> | <horizontal-tab> <space> ::= <TELNET ASCII space (decimal 32)> <tab> ::= <TELNET ASCII tab (decimal 9)> <cr> ::= <TELNET ASCII carriage return (decimal 13)> <lf> ::= <TELNET ASCII line feed (decimal 10)> <crlf> ::= <TELNET ASCII carriage return/line feed (decimal 13, followed by decimal 10)> II. Standard for the Format of Messages / 13 B. Syntax 1. Lexical Analysis c. Clarifications 1) Comments Comments may appear only within <field-body>s of structured fields. A comment is any set of TELNET ASCII characters, which is not within a quoted string, and which is enclosed in matching parentheses; parentheses nest, so that if a left paren occurs in a comment string, there must also be a matching right paren. Comments are NOT passed to the FTP server, as part of a MAIL or MLFL command, since comments are not part of the "formal" address. 2) "White space" Remember that in structured fields, MULTIPLE LINEAR WHITE SPACE TELNET ASCII CHARACTERS (namely <tab>s and <space>s) ARE TREATED AS SINGLE SPACES AND MAY FREELY SURROUND ANY SYMBOL. In all header fields, at least one <space> is REQUIRED only at the beginning of folded lines. Writers of mail-sending (i.e. header generating) programs should realize that there is no Network-wide definition of the effect of <tab> TELNET ASCII characters on the appearance of text at another Network host; therefore, the use of <tab>s in message headers, though permitted, is discouraged. Note that the contents of messages are required to conform with TELNET NVT conventions (e.g. <cr> must be followed by either <lf>, making a <crlf>, or <null>, if the <cr> is to stand alone). 3) Quoted strings Where permitted (i.e., in structured fields) quoted strings are treated as a single symbol (i.e. equivalent to an <atom> syntactically). However, if quoted strings are to be "folded" onto multiple lines, then the syntax for folding must be adhered to (See items II.B.1.a.1, above, and II.B.1.c.6, below.) Note that the official semantics do not encounter <crlf>s in quoted strings, although particular parsing programs may wish to note their presence. II. Standard for the Format of Messages / 14 B. Syntax 1. Lexical Analysis 4) Bracketing characters There are two types of brackets which must be well nested: - Parentheses are used to indicate comments. - Angle brackets ("<" and ">") are used where there is a question of the presence of machine-usable code (e.g. deliminating mailboxes). 5) Case independence of certain specials <atom>s It should be assumed by all mail reading programs that certain <atom>s can be represented in any combination of upper and lower case. These are: - <field-name>s, - "File", in a <path>, - "at", in an <at-indicator>, - <host-name>s, - <day-of-week>s, - <string-month>s, and - <time-zone>s For example, the <field-name>s "From", "FROM", "from", and even "FroM" should all be treated identically. Note that, at the level of this specification, case IS relevant to other <word>s and <text-line>s. Also see Section II.C.1.a.4, below. 6) Folding long lines Each header item (field of the message) may be represented on exactly one line consisting of the name of the field and its body, and this is what the parser sees. For readability, it is recommended that the <field-body> portion of long header items be "folded" onto multiple lines of the actual header. 7) Backspace characters Backspace TELNET ASCII characters (ASCII BS, decimal 8) may be included in <text-line> and <quoted-string> to effect overstriking; however, any use of backspaces which effects an overstrike to the left of the beginning of the <text-line> or <quoted-string> is prohibited. II. Standard for the Format of Messages / 15 B. Syntax 2. Messages 2. GENERAL SYNTAX OF MESSAGES: NOTE: The syntax indicates that items in <required-headers> must be in a specific order and precede all other header items. Header fields, in fact, are NOT required to occur in any particular order. Required header items must be unique (occur exactly once). This specification permits multiple occurrences of most optional fields. However, the interpretation of such multiple occurrences is not specified here. <message> ::= <headers> | <headers> <crlf> <message-text> <headers> ::= <required-headers> | <required-headers> <optional-headers> <required-headers> ::= <date-field> <originator> <originator> ::= <mach-from-field> | <mach-from-list> <sender-field> | <mach-from-field> <reply-to-field> | <any-from-field> <sender-field> <reply-to-field> <date-field> ::= "Date" ":" <date-time> <mach-from-field> ::= "From" ":" <mach-addr-item> <mach-from-list> ::= "From" ":" <mach-addr-list> <any-from-field> ::= "From" ":" <address-list> <sender-field> ::= "Sender" ":" <host-phrase> <reply-to-field> ::= "Reply-To" ":" <mach-addr-list> <optional-headers>::= <optional-header-field> | <optional-headers> <optional-header-field> <optional-header-field> ::= <addressee-field> | <extension-field> <addressee-field> ::= "To" ":" <address-list> | "cc" ":" <address-list> | "bcc" ":" <address-list> | "Fcc" ":" <path-list> <extension-field> ::= "In-Reply-To" ":" <reference-list> | "Keywords" ":" <phrase-list> | "Message-Id" ":" <mach-host-phrase> | "References" ":" <reference-list> | "Subject" ":" <text-line> | "Comments" ":" <text-line> | <user-defined-field> II. Standard for the Format of Messages / 16 B. Syntax 2. Messages <user-defined-field> ::= <A <field> which has a <field-name> not defined in this specification> The following syntax for the bodies of various fields should be thought of as describing each field body as a single long string (or line). The section on Lexical Analysis (section II.B.1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -