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. 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.
Inputbinary attachmentOutputBase64 with CRLF every 76 chars -
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.
Inputimage.pngOutputContent-Type: image/png\nContent-Transfer-Encoding: base64\n\n<iVBOR...> -
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.
InputMIME partOutputoriginal 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?