The MIME Information Page

MIME means Multipurpose Internet Mail Extensions, and refers to an official Internet standard that specifies how messages must be formatted so that they can be exchanged between different email systems. MIME is a very flexible format, permitting one to include virtually any type of file or document in an email message. Specifically, MIME messages can contain text, images, audio, video, or other application-specific data.



Base64 Encoding

To insure that email messages containing images or other non-text information will be delivered with maximum protection against corruption, MIME provides a way for non-text information to be encoded as text. This encoding is known as base64, and appears to be a source of frustration for many email users. Here's helpful information for decoding MIME messages.

The Official MIME Specification

The definitive information on the MIME format is provided by the Internet Engineering Task Force (IETF) in the following documents:

  • RFC-822 Standard for the format of ARPA Internet text messages
  • RFC-2045 Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies
  • RFC-2046 Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types
  • RFC-2047 Multipurpose Internet Mail Extensions (MIME) Part Three: Message Header Extensions for Non-ASCII Text
  • RFC-2048 Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures
  • RFC-2049 Multipurpose Internet Mail Extensions (MIME) Part Five: Conformance Criteria and Examples

MIME Frequently Asked Questions

There is a list of Frequently Asked Questions About MIME.

MIME and the World Wide Web

The MIME format is also very similar to the format of information that is exchanged between a Web browser and the Web server it connects to. This related format is specified as part of the Hypertext Transfer Protocol (HTTP). For the definitive information on HTTP, you should consult RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1.

Email Related Links

For Programmers

If you are a C++ programmer interested in writing any kind of email, netnews, or HTTP application, you might want to consider using Hunny MIME++, a C++ library designed specifically to make it easier to create such applications. In Hunny MIME++, all the elements of the BNF grammar specified in the RFCs are represented as C++ classes, making the library very intuitive to use. For more information, or to download the library and its documentation, please visit the MIME++ Home Page.

Java programmers, check out Hunny JMIME, which is much the same as Hunny MIME++, only it's a pure Java class library. Information is available on the JMIME Home Page.

There is a suite of Perl modules for developing MIME applications. You can visit any CPAN mirror and get the MIME-tools.

If you prefer developing in C, there is also the c-client library for developing MIME applications.