Giao thức Mở rộng Thư điện tử Internet Đa mục đích
MIME (Multipurpose Internet Mail Extensions) là một tiêu chuẩn Internet mở rộng định dạng email để hỗ trợ:
- văn bản trong bộ ký tự không phải US-ASCII;
- tệp đính kèm không phải văn bản;
- các phần thân tin nhắn đa phần; và
- thông tin tiêu đề trong bộ mã ký tự không phải ASCII.
SMTP chỉ hỗ trợ các ký tự ASCII 7 bit, điều này có nghĩa là nó chỉ hỗ trợ một số ngôn ngữ hạn chế. Các ngôn ngữ dựa trên bảng chữ cái Latin hoạt động tốt trong SMTP; các ngôn ngữ khác không được hiển thị đúng khi email được gửi. Tuy nhiên, MIME mở rộng hỗ trợ ký tự ASCII của SMTP để các email sử dụng bộ mã ký tự khác, hình ảnh và âm thanh có thể được gửi và hiển thị. Nói chung, tất cả các client email và máy chủ SMTP đều có khả năng xử lý đúng các tin nhắn ở định dạng MIME.
Hiểu các tiêu đề MIME
Tiêu đề MIME chứa thông tin về giao thức.
MIME-Version
Điều này cho biết tin nhắn được định dạng theo MIME. Nó hiển thị như sau:
MIME-Version: 1.0
Content-Type
Điều này cho biết loại nội dung của tin nhắn, được đưa ra dưới dạng cặp loại và kiểu phụ: ví dụ text/plain, text/html. Kiểu nội dung multipart có thể chứa văn bản, HTML, tệp đính kèm, hình ảnh, âm thanh, video, v.v.
Content-Type: multipart
Content-Transfer-Encoding
Cho biết liệu có sử dụng một sơ đồ mã hoá nhị phân-sang-văn bản ở trên (trên) loại mã hoá được chỉ định bởi content-type hay không. Nếu có, chỉ ra loại nào. Ở đây chúng ta có thể chỉ định kiểu mã hoá 7-bit, 8-bit và binary.
Encoded-Word
Tiêu đề tin nhắn SMTP thường sử dụng ký tự ASCII. Các ký tự không phải ASCII phải sử dụng cú pháp từ mã hoá MIME thay vì chuỗi nguyên bản. Định dạng là:
"=? charset ? encoding ? encoded text ?=".
Tin nhắn Multipart
Một tin nhắn MIME multipart chứa một ranh giới (boundary) trong tiêu đề content-type. Ranh giới này, không được xuất hiện trong bất kỳ phần nào, được đặt giữa các phần, và ở đầu và cuối thân tin nhắn, như sau:
MIME-version: 1.0
Content-type: multipart/mixed; boundary="frontier"
This is a multi-part message in MIME format.
--frontier
Content-type: text/plain
This is the body of the message.
--frontier
Content-type: application/octet-stream
Content-transfer-encoding: base64
PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
--frontier--
Mỗi phần bao gồm tiêu đề nội dung riêng và một thân tin.
Kiểu phụ Multipart
Tiêu chuẩn MIME định nghĩa nhiều kiểu phụ của tin nhắn multipart. Kiểu phụ được chỉ định trong tiêu đề "Content-Type" của toàn bộ tin nhắn.
Dưới đây là danh sách các kiểu phụ được sử dụng phổ biến nhất.
- Mixed: Multipart/mixed được dùng để gửi các tệp có các tiêu đề "Content-Type" khác nhau theo dạng nội tuyến. Khi gửi ảnh hoặc các tệp dễ đọc khác, hầu hết client mail sẽ hiển thị chúng trực tiếp.
- Message: Một phần Message chứa một email.
- Digest: Digest là một cách đơn giản để gửi nhiều tin văn bản. Kiểu nội dung mặc định cho mỗi phần là "message/rfc822".
- Alternative: Kiểu phụ Alternative cho thấy mỗi phần là một phiên bản "alternative" của cùng một nội dung (hoặc tương tự), mỗi phần ở định dạng khác nhau được chỉ định bởi tiêu đề "Content-Type".
Thường gặp nhất, multipart/alternative được sử dụng cho email có hai phần, một phần văn bản thuần (text/plain) và một phần HTML (text/html). Phần văn bản thuần cung cấp tính tương thích ngược trong khi phần HTML cho phép sử dụng định dạng và siêu liên kết. Hầu hết các client email cung cấp tùy chọn cho người dùng ưu tiên văn bản thuần so với HTML; đây là một ví dụ về cách các yếu tố địa phương có thể ảnh hưởng đến cách ứng dụng chọn phần "tốt nhất" của tin nhắn để hiển thị.