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.
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!)