7.3.2. The Message/Partial subtype
Connected: An Internet Encyclopedia
7.3.2. The Message/Partial subtype
Up:
Connected: An Internet Encyclopedia
Up:
Requests For Comments
Up:
RFC 1521
Up:
7. The Predefined Content-Type Values
Up:
7.3. The Message Content-Type
Prev: 7.3.1. The Message/rfc822 (primary) subtype
Next: 7.3.3. The Message/External-Body subtype
7.3.2. The Message/Partial subtype
7.3.2. The Message/Partial subtype
A subtype of message, "partial", is defined in order to allow large
objects to be delivered as several separate pieces of mail and
automatically reassembled by the receiving user agent. (The concept
is similar to IP fragmentation/reassembly in the basic Internet
Protocols.) This mechanism can be used when intermediate transport
agents limit the size of individual messages that can be sent.
Content-Type "message/partial" thus indicates that the body contains
a fragment of a larger message.
Three parameters must be specified in the Content-Type field of type
message/partial: The first, "id", is a unique identifier, as close to
a world-unique identifier as possible, to be used to match the parts
together. (In general, the identifier is essentially a message-id;
if placed in double quotes, it can be any message-id, in accordance
with the BNF for "parameter" given earlier in this specification.)
The second, "number", an integer, is the part number, which indicates
where this part fits into the sequence of fragments. The third,
"total", another integer, is the total number of parts. This third
subfield is required on the final part, and is optional (though
encouraged) on the earlier parts. Note also that these parameters
may be given in any order.
Thus, part 2 of a 3-part message may have either of the following
header fields:
Content-Type: Message/Partial;
number=2; total=3;
id="oc=jpbe0M2Yt4s@thumper.bellcore.com"
Content-Type: Message/Partial;
id="oc=jpbe0M2Yt4s@thumper.bellcore.com";
number=2
But part 3 MUST specify the total number of parts:
Content-Type: Message/Partial;
number=3; total=3;
id="oc=jpbe0M2Yt4s@thumper.bellcore.com"
Note that part numbering begins with 1, not 0.
When the parts of a message broken up in this manner are put
together, the result is a complete MIME entity, which may have its
own Content-Type header field, and thus may contain any other data
type.
Message fragmentation and reassembly: The semantics of a reassembled
partial message must be those of the "inner" message, rather than of
a message containing the inner message. This makes it possible, for
example, to send a large audio message as several partial messages,
and still have it appear to the recipient as a simple audio message
rather than as an encapsulated message containing an audio message.
That is, the encapsulation of the message is considered to be
"transparent".
When generating and reassembling the parts of a message/partial
message, the headers of the encapsulated message must be merged with
the headers of the enclosing entities. In this process the following
rules must be observed:
- All of the header fields from the initial enclosing entity
(part one), except those that start with "Content-" and the
specific header fields "Message-ID", "Encrypted", and "MIME-
Version", must be copied, in order, to the new message.
- Only those header fields in the enclosed message which start
with "Content-" and "Message-ID", "Encrypted", and "MIME-Version"
must be appended, in order, to the header fields of the new
message. Any header fields in the enclosed message which do not
start with "Content-" (except for "Message-ID", "Encrypted", and
"MIME-Version") will be ignored.
- All of the header fields from the second and any subsequent
messages will be ignored.
For example, if an audio message is broken into two parts, the first
part might look something like this:
X-Weird-Header-1: Foo
From: Bill@host.com
To: joe@otherhost.com
Subject: Audio mail
Message-ID: <id1@host.com>
MIME-Version: 1.0
Content-type: message/partial;
id="ABC@host.com";
number=1; total=2
X-Weird-Header-1: Bar
X-Weird-Header-2: Hello
Message-ID: <anotherid@foo.com>
MIME-Version: 1.0
Content-type: audio/basic
Content-transfer-encoding: base64
... first half of encoded audio data goes here...
and the second half might look something like this:
From: Bill@host.com
To: joe@otherhost.com
Subject: Audio mail
MIME-Version: 1.0
Message-ID: <id2@host.com>
Content-type: message/partial;
id="ABC@host.com"; number=2; total=2
... second half of encoded audio data goes here...
Then, when the fragmented message is reassembled, the resulting
message to be displayed to the user should look something like this:
X-Weird-Header-1: Foo
From: Bill@host.com
To: joe@otherhost.com
Subject: Audio mail
Message-ID: <anotherid@foo.com>
MIME-Version: 1.0
Content-type: audio/basic
Content-transfer-encoding: base64
... first half of encoded audio data goes here...
... second half of encoded audio data goes here...
Note on encoding of MIME entities encapsulated inside message/partial
entities: Because data of type "message" may never be encoded in
base64 or quoted-printable, a problem might arise if message/partial
entities are constructed in an environment that supports binary or
8-bit transport. The problem is that the binary data would be split
into multiple message/partial objects, each of them requiring binary
transport. If such objects were encountered at a gateway into a 7-
bit transport environment, there would be no way to properly encode
them for the 7-bit world, aside from waiting for all of the parts,
reassembling the message, and then encoding the reassembled data in
base64 or quoted-printable. Since it is possible that different
parts might go through different gateways, even this is not an
acceptable solution. For this reason, it is specified that MIME
entities of type message/partial must always have a content-
transfer-encoding of 7-bit (the default). In particular, even in
environments that support binary or 8-bit transport, the use of a
content-transfer-encoding of "8bit" or "binary" is explicitly
prohibited for entities of type message/partial.
It should be noted that, because some message transfer agents may
choose to automatically fragment large messages, and because such
agents may use different fragmentation thresholds, it is possible
that the pieces of a partial message, upon reassembly, may prove
themselves to comprise a partial message. This is explicitly
permitted.
It should also be noted that the inclusion of a "References" field in
the headers of the second and subsequent pieces of a fragmented
message that references the Message-Id on the previous piece may be
of benefit to mail readers that understand and track references.
However, the generation of such "References" fields is entirely
optional.
Finally, it should be noted that the "Encrypted" header field has
been made obsolete by Privacy Enhanced Messaging (PEM), but the rules
above are believed to describe the correct way to treat it if it is
encountered in the context of conversion to and from message/partial
fragments.
Next: 7.3.3. The Message/External-Body subtype
Connected: An Internet Encyclopedia
7.3.2. The Message/Partial subtype
|