Multipurpose Internet Mail Extensions

Overview

The base format of an email message is Internet Message Format", but most contemporary messages use a format called "Multipurpose Internet Mail Extensions". MIME specifies how to extend a valid IMF message, dealing with character encodings, various file formats, and many other odds and ends that make email what it is today.

A user of email rarely has to be concerned with the MIME specifications. Usually the communications system should take care of all the nitty gritty, and even then MIME processing is usually at a very low level. For this reason, the blissfully simple conception of a simple "email" is usually just fine from the perspective of a user and even in most cases for a developer.

Specifications

Multipurpose Internet Mail Extensions, or just MIME, functions much like an extension to IMF in order to:

  • Add different character sets for internationalization

  • Allow for processing of media types other than plain text

RFC2045

RFC2045 ("Multipurpose Internet Mail Extensions Part One: Format of Internet Message Bodies") describes the message body format of an email. It is part of a serious of MIME specifications including RFC2046, RFC2047, RFC2048, and RFC2049. This particular document in the series specifies the various headers that are used to describe the structure of a MIME message.

RFC2046

RFC2046 ("Multipurpose Internet Mail Extensions Part Two: Media Types") describes the various MIME media types, such as plain text, images, videos, etc. It is part of the serious of MIME specifications that includes RFC2045, RFC2047, RFC2048, and RFC2049.

RFC2047

RFC2047 ("MIME Part Three: Message Header Extensions for Non-ASCII Text") describes, as the title indicates, header extensions for non-ASCII text. It is part of the series of MIME specifications that includes RFC2045, RFC2046, RFC2048, and RFC2049.

RFC2048

RFC2048 ("Multipurpose Internet Mail Extensions Part Four: Registration Procedures") describes the procedure for registering a MIME type. It is not directly relevant to James, but is part of the MIME series that includes RFC2045, RFC2046, RFC2047, and RFC2049.

This specification was obsoleted by RFC4288 (which itself was obsoleted by RFC6838) and RFC4289.

RFC2049

RFC2049 ("Multipurpose Internet Mail Extensions Part Five: Conformance Criteria and Examples") mainly describes what portions of MIME must be supported by a conformant MIME implementation. It is part of the series that includes RFC2045, RFC2046, RFC2047, and RFC2049.

James Model

While a general, non-technical description of MIME is useful for most users and developers, it is not sufficient for building a complex system like James. Meanwhile, the technical specifications are unfortunately very messy and overly-complex due to their history and the context in which they were developed. To make dealing with emails possible and practical, James has defined its own version of what it means to be an email.

(TODO need a reference, please!)