Introduction to MIME
MIME (Multipurpose Internet Mail Extensions) is a way of extending the normal capabilities of internet mail (and news) by describing a format that can be used to encode more than just plain text in messages. Messages in MIME format conform to the standards use to send plain text messages (RFC 822), but are able to encode all kinds of other data, like images, sounds, text in different languages etc. It does this by converting those different data types into a plain text form.
This chapter does not attempt to give comprehensive coverage of the MIME standard, but to give you enough information to understand the impact of MIME on sending and receiving messages in MT-NewsWatcher.
The official MIME format is documented in the RFCs (Requests for Comments):
- RFC 2045 Part One: Format of Internet Message Bodies
- RFC 2046 Part Two: Media Types
- RFC 2047 Part Three: Message Header Extensions for Non-ASCII Text
- RFC 2048 Part Four: Registration Procedures
- RFC 2049 Part Five: Conformance Criteria and Examples
Of most relevence to the format of news articles are Parts One and Three.
The MIME standard describes a number of features of MIME which make it possible to describe multimedia context in a plain text form:
- Standardized message headers
-
Messages sent with MIME must contain certain headers that describe the version of MIME being used, and a description of how the contents of the message are encoded. For example, a news posting in MIME format might contain:
Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit
These headers state that the message conforms to the RFC 2045, that the content is plain text using the Western Latin 1 character set, and that the contents were not transformed for sending, and may be safely transmitted over a 7-bit channel.
- Media types
-
The
Content-Type
header for a section describes the contents of that section using a two-part media type description. Examples are "text/plain", "text/html", "image/jpeg", "video/quicktime". A decoding agent (like MT-NewsWatcher) can use this description to choose how to handle the contents of that section. - Encoding types
-
MIME supplies a number of ways of transforming text and other data so that it can be safely transmitted over legacy transport systems (like email). These value are supplied in the
Content-Transfer-Encoding
header. Briefly, these are:- 7bit, 8bit or binary
-
These values indicate that no encoding was used for the section
contents, but describe the nature of the enclosed data.
7bit
and8bit
is used for line-based text which does not, or does contain 8-bit (high ASCII) characters. A value ofbinary
indicates that the data is not line-based (ie. does not contain line termination characters to wrap lines of text to a reasonable width). - Quoted-Printable
-
The
Quoted-Printable
encoding is used for text that is mostly printable ASCII text, but which may contain high ASCII characters, or unwrapped lines. Characters that need to be encoded are replaced with their value like =A0, and lines are soft-wrapped by inserting = characters. - Base64
-
The
Base64
encoding is used for binary data, like images, sounds etc. The binary data is encoded in a sequence of characters according to some simple rules, to give text that looks like:/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIy
This data can be decoded back to the original binary data on the recieving end.
- Message compartmentalization
-
To allow MIME messages to contain different types of data (text, and an image, say), the message can be broken up into sections, so that each section contains one data type as described by its
Content-Type
header. Related sections can be grouped together, or sections can contain alternative representations of the same data so that clients can choose one that they are able to best display. For example, a MIME message can contain both plain text and HTML versions of the message body, wrapped in amultipart/alternative
section. If you view this message in MT-NewsWatcher, you'll see the plain text part, whereas viewing it in Netscape Communicator would show you the HTML part.Here's an example of a message with two subsections in a
multipart/mixed
section. The various parts have been color-coded, showing how each section has headers that describe its contents. This shows the text of the article as it appears on the server. MT-NewsWatcher decodes this for you, so you should never see these details.From: Simon Fraser <smfr@best.com> Newsgroups: alt.test Subject: Crow music image - crow-music.gif (1/1) Date: Sun, 05 Sep 1999 20:31:47 -0700 Message-ID: <smfr-7F7A59.20314705091999@news.mcom.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------UYHRtC0I5LhA" This is a multi-part message in MIME format. --------------UYHRtC0I5LhA Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Here is a funny picture. Simon --------------UYHRtC0I5LhA Content-Type: image/gif; name="crow-music.gif" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="crow-music.gif" R0lGODlhZABkAPcAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABm MwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/ ... wOOX8EBWr7xZjkiPsYZL0FM51pGMdaI7GhW5FsiWwYZSGKybrYr4RDa27jMsiKQkPeYaSVry kpjMZCTZFpwpUoQ6VgKMJjPpxpmM8pSotKT1PskTSXaSbamMJQsKKUggthKTHZolpKzIS5EE --------------UYHRtC0I5LhA--Note that the message is divided into sections, with the boundaries between sections marked by the string --------------UYHRtC0I5LhA. The first section is the plain text body of the message, and the second part is a Base64 encoded GIF file.
Receiving MIME Messages
When MT-NewsWatcher receives an article in MIME format, it can parse the message contents, and detect and decode the various sections as appropriate. It will decode Quoted-Printable sections, handles multiple sections with different character sets in a message, and decode Base64-encoded binaries. Horizontal divider lines are inserted between each section. Here's an example of a message with three binary attachments:
For multipart/alternative
sections, MT-NewsWatcher chooses the section that
it can best display. For the most common case, plain text and HTML, it will
display the plain text.
Viewing HTML
MT-NewsWatcher cannot currently display HTML. When it encounters an HTML section with no plain text alternative, it will display the raw HTML. You can view the HTML in a browser by using the
command on the context menu.Tip: You can also view the HTML in a browser by command-clicking on the first <HTML> tag as if it were a URL.
Viewing Binaries
When MT-NewsWatcher encounters a MIME section that contains Base64 text, it decodes that into binary form. It then tries to find a plugin in the NewsWatcher Plugins folder that can handle this kind of binary file, by looking at the file name extension for the encoded binary. If it finds a plugin that can handle the data, it feeds the binary data to the plugin for display. If no plugin is found that can handle the data, the encoded binary shows up as a file icon in the article body (like the MP3 and Stuffit archive icons in the screenshot above).
For more information about handling and saving encoded binaries, see the chapter on Binaries.
Sending Message with MIME
When the preference is set to send messages with MIME formatting (Send with MIME checkbox in the Message options preferences panel), MT-NewsWatcher will use MIME in outgoing email and news messages. This section describes the implications of using MIME for sending.
Note: It is recommended that you turn this option on, as MIME information allows other news clients to do a better job of displaying articles that you send, particularly if you send using a character set other than ISO-8859-1.
Sending Attached Binaries
When sending with MIME, you get some slightly different options when attaching files to an outgoing message. These differences are described in detail in the section on posting binaries. When MIME is on, data will be sent encoding with Base64. If you are sending a Macintosh file, and need to send the resource fork too, you also get the option of sending in AppleSingle or AppleDouble format (these formats include the resource fork of the file being attached). You can encode files with BinHex when sending MIME, but this is not recommended.
When sending a message with one or more attached files, MT-NewsWatcher sends
a message with a body which is a multipart/mixed
section.
Within this, the text of the message, and your signature, is included
as a text/plain
section. Following that are one or more
sections for the binaries, which will have appropriate MIME types
for the type of binary being sent. The MIME type is derived from the
file extension, using Internet Config file mapping settings.
Multipart Messages and MIME
If you send a message with attached binaries in multiple sections,
MT-NewsWatcher uses the MIME message/partial
format.
This is a way of describing content that is split across multiple
messages, and allows receiving agents to reassemble the parts in the
correct order.
Header Encoding with MIME
If you are sending MIME messages in a character set other than Western Latin 1 (ISO-8859-1), then MT-NewsWatcher will encode the textual headers of the message, if necessary, according to the rules described in RFC 2047. In this encoding, non-ASCII characters are encoded with either Quoted-Printable or Base64 encoding so that the headers don't get corrupted in sending. For example, a message with a subject line of
Subject: Flambé
would be sent encoded as
Subject: =?ISO-8859-1?Q?Flamb=E9?=
This kind of encoding may not be welcome in some groups, in which case you should disable sending with MIME when posting to such groups.
More information on sending with different character sets is provided in the chapter on International Language Support.
Table of Contents
- Preface
- Table of Contents
- Introduction
- Features
- Advanced features
- The Interface
- Appendices