Connected: An Internet Encyclopedia
RFC 822 - 4.1. SYNTAX

Top: Connected: An Internet Encyclopedia
Up: Requests For Comments
Up: RFC 822
Up: 4. MESSAGE SPECIFICATION
Prev: 4. MESSAGE SPECIFICATION
Next: 4.2. FORWARDING

### 4.1. SYNTAX

Note: Due to an artifact of the notational conventions, the syntax indicates that, when present, some fields, must be in a particular order. Header fields are NOT required to occur in any particular order, except that the message body must occur AFTER the headers. It is recommended that, if present, headers be sent in the order "Return-Path", "Received", "Date", "From", "Subject", "Sender", "To", "cc", etc.

This specification permits multiple occurrences of most fields. Except as noted, their interpretation is not specified here, and their use is discouraged.

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 "Lexical Analysis of Message" section on "Long Header Fields", above, indicates how such long strings can be represented on more than one line in the actual transmitted message.

         message     =  fields *( CRLF *text )       ; Everything after
                                                     ;  first null line
                                                     ;  is message body

         fields      =    dates                      ; Creation time,
                          source                     ;  author id & one
                        1*destination                ;  address required
                         *optional-field             ;  others optional

         source      = [  trace ]                    ; net traversals
                          originator                 ; original mail
                       [  resent ]                   ; forwarded

         trace       =    return                     ; path to sender
                        1*received                   ; receipt tags

         return      =  "Return-path" ":" route-addr ; return address

         received    =  "Received"    ":"            ; one per relay
                           ["from" domain]           ; sending host
                           ["by"   domain]           ; receiving host
                           ["via"  atom]             ; physical path
                          *("with" atom)             ; link/mail protocol
                           ["id"   msg-id]           ; receiver msg id
                           ["for"  addr-spec]        ; initial form
                            ";"    date-time         ; time received

         originator  =   authentic                   ; authenticated addr
                       [ "Reply-To"   ":" 1#address] )

         authentic   =   "From"       ":"   mailbox  ; Single author
                     / ( "Sender"     ":"   mailbox  ; Actual submittor
                         "From"       ":" 1#mailbox) ; Multiple authors
                                                     ;  or not sender

         resent      =   resent-authentic
                       [ "Resent-Reply-To"  ":" 1#address] )

         resent-authentic =
                     =   "Resent-From"      ":"   mailbox
                     / ( "Resent-Sender"    ":"   mailbox
                         "Resent-From"      ":" 1#mailbox  )

         dates       =   orig-date                   ; Original
                       [ resent-date ]               ; Forwarded

         orig-date   =  "Date"        ":"   date-time

         resent-date =  "Resent-Date" ":"   date-time

         destination =  "To"          ":" 1#address  ; Primary
                     /  "Resent-To"   ":" 1#address
                     /  "cc"          ":" 1#address  ; Secondary
                     /  "Resent-cc"   ":" 1#address
                     /  "bcc"         ":"  #address  ; Blind carbon
                     /  "Resent-bcc"  ":"  #address

         optional-field =
                     /  "Message-ID"        ":"   msg-id
                     /  "Resent-Message-ID" ":"   msg-id
                     /  "In-Reply-To"       ":"  *(phrase / msg-id)
                     /  "References"        ":"  *(phrase / msg-id)
                     /  "Keywords"          ":"  #phrase
                     /  "Subject"           ":"  *text
                     /  "Comments"          ":"  *text
                     /  "Encrypted"         ":" 1#2word
                     /  extension-field              ; To be defined
                     /  user-defined-field           ; May be pre-empted

         msg-id      =  "<" addr-spec ">"            ; Unique message id

         extension-field =
                       <Any field which is defined in a document
                        published as a formal extension to this
                        specification; none will have names beginning
                        with the string "X-">

         user-defined-field =
                       <Any field which has not been defined
                        in this specification or published as an
                        extension to this specification; names for
                        such fields must be unique and may be
                        pre-empted by published extensions>

Next: 4.2. FORWARDING

Connected: An Internet Encyclopedia
RFC 822 - 4.1. SYNTAX