Skip to content
uencoder
TUTORIAL

How to Use MIME Encoding

Encode and decode MIME (Base64 with line breaks) for email attachments and multipart messages.

Problem

You need to attach a binary file to an email, which requires MIME Base64 encoding with specific line-length rules.

Prerequisites

  • Basic understanding of email structure
  • Familiarity with Base64

Steps

  1. 1. Understand MIME line wrapping

    MIME Base64 inserts a CRLF line break every 76 characters. This is required by RFC 2045 for email transport. Standard Base64 encoders may not add these breaks, so you must use a MIME-aware encoder.

    Input
    binary attachment
    Output
    Base64 with CRLF every 76 chars
  2. 2. Add MIME headers

    Wrap the encoded data with Content-Type, Content-Transfer-Encoding: base64, and Content-Disposition headers. These tell the email client how to decode and present the attachment.

    Input
    image.png
    Output
    Content-Type: image/png\nContent-Transfer-Encoding: base64\n\n<iVBOR...>
  3. 3. Decode on the receiving end

    A MIME parser reads the headers, strips the CRLF line breaks from the Base64 body, and decodes it back to the original binary. Use a MIME decoder rather than a raw Base64 decoder to handle the line breaks automatically.

    Input
    MIME part
    Output
    original file

Expected result

A valid MIME part that email clients can decode and display as an attachment.

Common errors

Email client shows corrupted attachment
Ensure line breaks are CRLF (\r\n), not just LF. Some servers reject bare LF.
Decoder fails on the MIME body
Strip all whitespace and CRLF before passing to a raw Base64 decoder, or use a MIME-specific decoder.

Troubleshooting

  • If the attachment is truncated, check that your mail server does not have a line-length limit below 76.
  • Verify the Content-Transfer-Encoding header matches the actual encoding used.

Security limits

  • MIME encoding does not encrypt content. Use S/MIME or PGP for confidential attachments.

Related tools

Related glossary

Related tasks

Ready to run it?

References