rohrpost

A commandline mail client to change the world as we see it.
git clone git://r-36.net/rohrpost
Log | Files | Refs | README | LICENSE

rfc2387.txt (18864B)


      1 
      2 
      3 
      4 
      5 
      6 
      7 Network Working Group                                       E. Levinson
      8 Request for Comments: 2387                                  August 1998
      9 Obsoletes: 2112
     10 Category: Standards Track
     11 
     12 
     13                 The MIME Multipart/Related Content-type
     14 
     15 Status of this Memo
     16 
     17    This document specifies an Internet standards track protocol for the
     18    Internet community, and requests discussion and suggestions for
     19    improvements.  Please refer to the current edition of the "Internet
     20    Official Protocol Standards" (STD 1) for the standardization state
     21    and status of this protocol.  Distribution of this memo is unlimited.
     22 
     23 Copyright Notice
     24 
     25    Copyright (C) The Internet Society (1998).  All Rights Reserved.
     26 
     27 Abstract
     28 
     29    The Multipart/Related content-type provides a common mechanism for
     30    representing objects that are aggregates of related MIME body parts.
     31    This document defines the Multipart/Related content-type and provides
     32    examples of its use.
     33 
     34 1.  Introduction
     35 
     36    Several applications of MIME, including MIME-PEM, and MIME-Macintosh
     37    and other proposals, require multiple body parts that make sense only
     38    in the aggregate.  The present approach to these compound objects has
     39    been to define specific multipart subtypes for each new object.  In
     40    keeping with the MIME philosophy of having one mechanism to achieve
     41    the same goal for different purposes, this document describes a
     42    single mechanism for such aggregate or compound objects.
     43 
     44    The Multipart/Related content-type addresses the MIME representation
     45    of compound objects.  The object is categorized by a "type"
     46    parameter.  Additional parameters are provided to indicate a specific
     47    starting body part or root and auxiliary information which may be
     48    required when unpacking or processing the object.
     49 
     50    Multipart/Related MIME entities may contain Content-Disposition
     51    headers that provide suggestions for the storage and display of a
     52    body part.  Multipart/Related processing takes precedence over
     53    Content-Disposition; the interaction between them is discussed in
     54    section 4.
     55 
     56 
     57 
     58 Levinson                    Standards Track                     [Page 1]
     59 
     60 RFC 2387                   Multipart/Related                 August 1998
     61 
     62 
     63    Responsibility for the display or processing of a Multipart/Related's
     64    constituent entities rests with the application that handles the
     65    compound object.
     66 
     67 2.  Multipart/Related Registration Information
     68 
     69    The following form is copied from RFC 1590, Appendix A.
     70 
     71      To:  IANA@isi.edu
     72      Subject:  Registration of new Media Type content-type/subtype
     73 
     74      Media Type name:           Multipart
     75 
     76      Media subtype name:        Related
     77 
     78      Required parameters:       Type, a media type/subtype.
     79 
     80      Optional parameters:       Start
     81                                 Start-info
     82 
     83      Encoding considerations:   Multipart content-types cannot have
     84                                 encodings.
     85 
     86      Security considerations:   Depends solely on the referenced type.
     87 
     88      Published specification:   RFC-REL (this document).
     89 
     90      Person & email address to contact for further information:
     91                                 Edward Levinson
     92                                 47 Clive Street
     93                                 Metuchen, NJ  08840-1060
     94                                 +1 908 494 1606
     95                                 XIson@cnj.digex.net
     96 
     97 3.  Intended usage
     98 
     99    The Multipart/Related media type is intended for compound objects
    100    consisting of several inter-related body parts.  For a
    101    Multipart/Related object, proper display cannot be achieved by
    102    individually displaying the constituent body parts.  The content-type
    103    of the Multipart/Related object is specified by the type parameter.
    104    The "start" parameter, if given, points, via a content-ID, to the
    105    body part that contains the object root.  The default root is the
    106    first body part within the Multipart/Related body.
    107 
    108    The relationships among the body parts of a compound object
    109    distinguishes it from other object types.  These relationships are
    110    often represented by links internal to the object's components that
    111 
    112 
    113 
    114 Levinson                    Standards Track                     [Page 2]
    115 
    116 RFC 2387                   Multipart/Related                 August 1998
    117 
    118 
    119    reference the other components.  Within a single operating
    120    environment the links are often file names, such links may be
    121    represented within a MIME message using content-IDs or the value of
    122    some other "Content-" headers.
    123 
    124 3.1.  The Type Parameter
    125 
    126    The type parameter must be specified and its value is the MIME media
    127    type of the "root" body part.  It permits a MIME user agent to
    128    determine the content-type without reference to the enclosed body
    129    part.  If the value of the type parameter and the root body part's
    130    content-type differ then the User Agent's behavior is undefined.
    131 
    132 3.2.  The Start Parameter
    133 
    134    The start parameter, if given, is the content-ID of the compound
    135    object's "root".  If not present the "root" is the first body part in
    136    the Multipart/Related entity.  The "root" is the element the
    137    applications processes first.
    138 
    139 3.3.  The Start-Info Parameter
    140 
    141    Additional information can be provided to an application by the
    142    start-info parameter.  It contains either a string or points, via a
    143    content-ID, to another MIME entity in the message.  A typical use
    144    might be to provide additional command line parameters or a MIME
    145    entity giving auxiliary information for processing the compound
    146    object.
    147 
    148    Applications that use Multipart/Related must specify the
    149    interpretation of start-info.  User Agents shall provide the
    150    parameter's value to the processing application.  Processes can
    151    distinguish a start-info reference from a token or quoted-string by
    152    examining the first non-white-space character, "<" indicates a
    153    reference.
    154 
    155 3.4.  Syntax
    156 
    157      related-param   := [ ";" "start" "=" cid ]
    158                         [ ";" "start-info"  "="
    159                            ( cid-list / value ) ]
    160                         [ ";" "type"  "=" type "/" subtype ]
    161                         ; order independent
    162 
    163      cid-list        := cid cid-list
    164 
    165      cid             := msg-id     ; c.f. [822]
    166 
    167 
    168 
    169 
    170 Levinson                    Standards Track                     [Page 3]
    171 
    172 RFC 2387                   Multipart/Related                 August 1998
    173 
    174 
    175      value           := token / quoted-string    ; c.f. [MIME]
    176                            ; value cannot begin with "<"
    177 
    178    Note that the parameter values will usually require quoting.  Msg-id
    179    contains the special characters "<", ">", "@", and perhaps other
    180    special characters.  If msg-id contains quoted-strings, those quote
    181    marks must be escaped.  Similarly, the type parameter contains the
    182    special character "/".
    183 
    184 4.  Handling Content-Disposition Headers
    185 
    186    Content-Disposition Headers [DISP] suggest presentation styles for
    187    MIME body parts.  [DISP] describes two presentation styles, called
    188    the disposition type, INLINE and ATTACHMENT.  These, used within a
    189    multipart entity, allow the sender to suggest presentation
    190    information.  [DISP] also provides for an optional storage (file)
    191    name.  Content-Disposition headers could appear in one or more body
    192    parts contained within a Multipart/Related entity.
    193 
    194    Using Content-Disposition headers in addition to Multipart/Related
    195    provides presentation information to User Agents that do not
    196    recognize Multipart/Related.  They will treat the multipart as
    197    Multipart/Mixed and they may find the Content-Disposition information
    198    useful.
    199 
    200    With Multipart/Related however, the application processing the
    201    compound object determines the presentation style for all the
    202    contained parts.  In that context the Content-Disposition header
    203    information is redundant or even misleading.  Hence, User Agents that
    204    understand Multipart/Related shall ignore the disposition type within
    205    a Multipart/Related body part.
    206 
    207    It may be possible for a User Agent capable of handling both
    208    Multipart/Related and Content-Disposition headers to provide the
    209    invoked application the Content-Disposition header's optional
    210    filename parameter to the Multipart/Related.  The use of that
    211    information will depend on the specific application and should be
    212    specified when describing the handling of the corresponding compound
    213    object.  Such descriptions would be appropriate in an RFC registering
    214    that object's media type.
    215 
    216 5.  Examples
    217 
    218 5.1 Application/X-FixedRecord
    219 
    220    The X-FixedRecord content-type consists of one or more octet-streams
    221    and a list of the lengths of each record.  The root, which lists the
    222    record lengths of each record within the streams.  The record length
    223 
    224 
    225 
    226 Levinson                    Standards Track                     [Page 4]
    227 
    228 RFC 2387                   Multipart/Related                 August 1998
    229 
    230 
    231    list, type Application/X-FixedRecord, consists of a set of INTEGERs
    232    in ASCII format, one per line.  Each INTEGER gives the number of
    233    octets from the octet-stream body part that constitute the next
    234    "record".
    235 
    236    The example below, uses a single data block.
    237 
    238      Content-Type: Multipart/Related; boundary=example-1
    239              start="<950120.aaCC@XIson.com>";
    240              type="Application/X-FixedRecord"
    241              start-info="-o ps"
    242 
    243      --example-1
    244      Content-Type: Application/X-FixedRecord
    245      Content-ID: <950120.aaCC@XIson.com>
    246 
    247      25
    248      10
    249      34
    250      10
    251      25
    252      21
    253      26
    254      10
    255      --example-1
    256      Content-Type: Application/octet-stream
    257      Content-Description: The fixed length records
    258      Content-Transfer-Encoding: base64
    259      Content-ID: <950120.aaCB@XIson.com>
    260 
    261      T2xkIE1hY0RvbmFsZCBoYWQgYSBmYXJtCkUgSS
    262      BFIEkgTwpBbmQgb24gaGlzIGZhcm0gaGUgaGFk
    263      IHNvbWUgZHVja3MKRSBJIEUgSSBPCldpdGggYS
    264      BxdWFjayBxdWFjayBoZXJlLAphIHF1YWNrIHF1
    265      YWNrIHRoZXJlLApldmVyeSB3aGVyZSBhIHF1YW
    266      NrIHF1YWNrCkUgSSBFIEkgTwo=
    267 
    268      --example-1--
    269 
    270 
    271 
    272 
    273 
    274 
    275 
    276 
    277 
    278 
    279 
    280 
    281 
    282 Levinson                    Standards Track                     [Page 5]
    283 
    284 RFC 2387                   Multipart/Related                 August 1998
    285 
    286 
    287 5.2 Text/X-Okie
    288 
    289    The Text/X-Okie is an invented markup language permitting the
    290    inclusion of images with text.  A feature of this example is the
    291    inclusion of two additional body parts, both picture. They are
    292    referred to internally by the encapsulated document via each
    293    picture's body part content-ID.  Usage of "cid:", as in this example,
    294    may be useful for a variety of compound objects.  It is not, however,
    295    a part of the Multipart/Related specification.
    296 
    297      Content-Type: Multipart/Related; boundary=example-2;
    298              start="<950118.AEBH@XIson.com>"
    299              type="Text/x-Okie"
    300 
    301      --example-2
    302      Content-Type: Text/x-Okie; charset=iso-8859-1;
    303              declaration="<950118.AEB0@XIson.com>"
    304      Content-ID: <950118.AEBH@XIson.com>
    305      Content-Description: Document
    306 
    307      {doc}
    308      This picture was taken by an automatic camera mounted ...
    309      {image file=cid:950118.AECB@XIson.com}
    310      {para}
    311      Now this is an enlargement of the area ...
    312      {image file=cid:950118:AFDH@XIson.com}
    313      {/doc}
    314      --example-2
    315      Content-Type: image/jpeg
    316      Content-ID: <950118.AFDH@XIson.com>
    317      Content-Transfer-Encoding: BASE64
    318      Content-Description: Picture A
    319 
    320      [encoded jpeg image]
    321      --example-2
    322      Content-Type: image/jpeg
    323      Content-ID: <950118.AECB@XIson.com>
    324      Content-Transfer-Encoding: BASE64
    325      Content-Description: Picture B
    326 
    327      [encoded jpeg image]
    328      --example-2--
    329 
    330 5.3 Content-Disposition
    331 
    332    In the above example each image body part could also have a Content-
    333    Disposition header.  For example,
    334 
    335 
    336 
    337 
    338 Levinson                    Standards Track                     [Page 6]
    339 
    340 RFC 2387                   Multipart/Related                 August 1998
    341 
    342 
    343      --example-2
    344      Content-Type: image/jpeg
    345      Content-ID: <950118.AECB@XIson.com>
    346      Content-Transfer-Encoding: BASE64
    347      Content-Description: Picture B
    348      Content-Disposition: INLINE
    349 
    350      [encoded jpeg image]
    351      --example-2--
    352 
    353    User Agents that recognize Multipart/Related will ignore the
    354    Content-Disposition header's disposition type.  Other User Agents
    355    will process the Multipart/Related as Multipart/Mixed and may make
    356    use of that header's information.
    357 
    358 6.  User Agent Requirements
    359 
    360    User agents that do not recognize Multipart/Related shall, in
    361    accordance with [MIME], treat the entire entity as Multipart/Mixed.
    362    MIME User Agents that do recognize Multipart/Related entities but are
    363    unable to process the given type should give the user the option of
    364    suppressing the entire Multipart/Related body part shall be.
    365 
    366    Existing MIME-capable mail user agents (MUAs) handle the existing
    367    media types in a straightforward manner.  For discrete media types
    368    (e.g. text, image, etc.) the body of the entity can be directly
    369    passed to a display process.  Similarly the existing composite
    370    subtypes can be reduced to handing one or more discrete types.
    371    Handling Multipart/Related differs in that processing cannot be
    372    reduced to handling the individual entities.
    373 
    374    The following sections discuss what information the processing
    375    application requires.
    376 
    377    It is possible that an application specific "receiving agent" will
    378    manipulate the entities for display prior to invoking actual
    379    application process.  Okie, above, is an example of this; it may need
    380    a receiving agent to parse the document and substitute local file
    381    names for the originator's file names.  Other applications may just
    382    require a table showing the correspondence between the local file
    383    names and the originator's.  The receiving agent takes responsibility
    384    for such processing.
    385 
    386 6.1 Data Requirements
    387 
    388    MIME-capable mail user agents (MUAs) are required to provide the
    389    application:
    390 
    391 
    392 
    393 
    394 Levinson                    Standards Track                     [Page 7]
    395 
    396 RFC 2387                   Multipart/Related                 August 1998
    397 
    398 
    399    (a) the bodies of the MIME entities and the entity Content-* headers,
    400 
    401    (b) the parameters of the Multipart/Related Content-type header, and
    402 
    403    (c) the correspondence between each body's local file name, that
    404        body's header data, and, if present, the body part's content-ID.
    405 
    406 6.2 Storing Multipart/Related Entities
    407 
    408    The Multipart/Related media type will be used for objects that have
    409    internal linkages between the body parts.  When the objects are
    410    stored the linkages may require processing by the application or its
    411    receiving agent.
    412 
    413 6.3 Recursion
    414 
    415    MIME is a recursive structure.  Hence one must expect a
    416    Multipart/Related entity to contain other Multipart/Related entities.
    417    When a Multipart/Related entity is being processed for display or
    418    storage, any enclosed Multipart/Related entities shall be processed
    419    as though they were being stored.
    420 
    421 6.4 Configuration Considerations
    422 
    423    It is suggested that MUAs that use configuration mechanisms, see
    424    [CFG] for an example, refer to Multipart/Related as Multi-
    425    part/Related/<type>, were <type> is the value of the "type"
    426    parameter.
    427 
    428 7.  Security Considerations
    429 
    430    Security considerations relevant to Multipart/Related are identical
    431    to those of the underlying content-type.
    432 
    433 8.  Acknowledgments
    434 
    435    This proposal is the result of conversations the author has had with
    436    many people.  In particular, Harald A. Alvestrand, James Clark,
    437    Charles Goldfarb, Gary Houston, Ned Freed, Ray Moody, and Don
    438    Stinchfield, provided both encouragement and invaluable help.  The
    439    author, however, take full responsibility for all errors contained in
    440    this document.
    441 
    442 
    443 
    444 
    445 
    446 
    447 
    448 
    449 
    450 Levinson                    Standards Track                     [Page 8]
    451 
    452 RFC 2387                   Multipart/Related                 August 1998
    453 
    454 
    455 9.  References
    456 
    457    [822]       Crocker, D., "Standard for the Format of ARPA Internet
    458                Text Messages", STD 11, RFC 822, August 1982.
    459 
    460    [CID]       Levinson, E., and J. Clark, "Message/External-Body
    461                Content-ID Access Type",  RFC 1873, December 1995,
    462                Levinson, E., "Message/External-Body Content-ID Access
    463                Type", Work in Progress.
    464 
    465    [CFG]       Borenstein, N., "A User Agent Configuration Mechanism For
    466                Multimedia Mail Format Information", RFC 1524, September
    467                1993.
    468 
    469    [DISP]      Troost, R., and S. Dorner, "Communicating Presentation
    470                Information in Internet Messages:  The Content-
    471                Disposition Header", RFC 1806, June 1995.
    472 
    473    [MIME]      Borenstein, N., and Freed, N., "Multipurpose Internet
    474                Mail Extensions (MIME) Part One: Format of Internet
    475                Message Bodies", RFC 2045, November 1996.
    476 
    477 9.  Author's Address
    478 
    479    Edward Levinson
    480    47 Clive Street
    481    Metuchen, NJ  08840-1060
    482    USA
    483 
    484    Phone: +1 908 494 1606
    485    EMail: XIson@cnj.digex.com
    486 
    487 10.  Changes from previous draft (RFC 2112)
    488 
    489    Corrected cid urls to conform to RFC 2111; the angle brackets were
    490    removed.
    491 
    492 
    493 
    494 
    495 
    496 
    497 
    498 
    499 
    500 
    501 
    502 
    503 
    504 
    505 
    506 Levinson                    Standards Track                     [Page 9]
    507 
    508 RFC 2387                   Multipart/Related                 August 1998
    509 
    510 
    511 11.  Full Copyright Statement
    512 
    513    Copyright (C) The Internet Society (1998).  All Rights Reserved.
    514 
    515    This document and translations of it may be copied and furnished to
    516    others, and derivative works that comment on or otherwise explain it
    517    or assist in its implementation may be prepared, copied, published
    518    and distributed, in whole or in part, without restriction of any
    519    kind, provided that the above copyright notice and this paragraph are
    520    included on all such copies and derivative works.  However, this
    521    document itself may not be modified in any way, such as by removing
    522    the copyright notice or references to the Internet Society or other
    523    Internet organizations, except as needed for the purpose of
    524    developing Internet standards in which case the procedures for
    525    copyrights defined in the Internet Standards process must be
    526    followed, or as required to translate it into languages other than
    527    English.
    528 
    529    The limited permissions granted above are perpetual and will not be
    530    revoked by the Internet Society or its successors or assigns.
    531 
    532    This document and the information contained herein is provided on an
    533    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
    534    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
    535    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
    536    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
    537    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
    538 
    539 
    540 
    541 
    542 
    543 
    544 
    545 
    546 
    547 
    548 
    549 
    550 
    551 
    552 
    553 
    554 
    555 
    556 
    557 
    558 
    559 
    560 
    561 
    562 Levinson                    Standards Track                    [Page 10]
    563