Protokol Multipurpose Internet Mail Extensions
Multipurpose Internet Mail Extensions (MIME) adalah standar Internet yang memperluas format email untuk mendukung:
- teks dalam set karakter selain US-ASCII;
- lampiran non-teks;
- badan pesan multi-bagian; dan
- informasi header dalam set karakter non-ASCII.
SMTP hanya mendukung karakter ASCII 7 bit yang secara efektif berarti hanya mendukung sejumlah kecil bahasa. Bahasa berbasis alfabet Latin dapat diterima oleh SMTP; bahasa lain tidak ditampilkan dengan benar saat email dikirim. Namun, MIME memperluas dukungan karakter ASCII pada SMTP sehingga email yang menggunakan set karakter lain, gambar, dan suara dapat dikirim dan ditampilkan. Secara umum, semua klien email dan server SMTP memetakan pesan berformat MIME dengan benar.
Understanding MIME Headers
Header MIME berisi informasi tentang protokol.
MIME-Version
Ini menunjukkan bahwa pesan diformat sebagai MIME. Tampaknya sebagai:
MIME-Version: 1.0
Content-Type
Ini menunjukkan jenis konten pesan, diberikan sebagai pasangan tipe dan subtipe: text/plain, text/html, misalnya. Tipe konten multipart dapat berisi teks, HTML, lampiran, gambar, audio, video, dan sebagainya.
Content-Type: multipart
Content-Transfer-Encoding
Menunjukkan apakah skema enkoding biner-ke-teks digunakan di atas enkoding yang ditentukan oleh content-type. Jika ada, menyatakan yang mana. Kita dapat menentukan tipe pengkodean 7-bit, 8-bit, dan biner di sini.
Encoded-Word
Header pesan SMTP biasanya menggunakan karakter ASCII. Karakter non-ASCII harus menggunakan sintaks kata terenkripsi MIME alih-alih string literal. Formatnya adalah:
"=? charset ? encoding ? encoded text ?=".
Pesan-Multipart
Pesan multipart MIME berisi batas (boundary) dalam header content-type. Batas ini, yang tidak boleh muncul di bagian manapun, diletakkan di antara bagian-bagian, serta di awal dan akhir tubuh pesan, sebagai berikut:
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--
Setiap bagian terdiri dari header konten sendiri dan sebuah tubuh.
Subtipe Multipart
Standar MIME mendefinisikan berbagai subtipe pesan multipart. Subtipe ditentukan dalam header "Content-Type" dari keseluruhan pesan.
Berikut adalah daftar subtipe yang paling umum digunakan.
- Mixed: Multipart/mixed digunakan untuk mengirim file dengan header "Content-Type" yang berbeda secara inline. Jika mengirim gambar atau file lain yang mudah dibaca, kebanyakan klien email akan menampilkannya secara inline.
- Message: Bagian pesan berisi sebuah email.
- Digest: digest adalah cara sederhana untuk mengirim beberapa pesan teks. Tipe konten default untuk setiap bagian adalah "message/rfc822".
- Alternative: Subtipe alternatif menunjukkan bahwa setiap bagian adalah versi "alternatif" dari konten yang sama (atau serupa), masing-masing dalam format berbeda yang ditandai oleh header "Content-Type".
Umumnya multipart/alternative digunakan untuk email dengan dua bagian, satu teks polos (text/plain) dan satu HTML (text/html). Bagian teks polos memberikan kompatibilitas mundur sementara bagian HTML memungkinkan penggunaan pemformatan dan hyperlink. Kebanyakan klien email menawarkan opsi kepada pengguna untuk lebih menyukai teks polos daripada HTML; ini adalah contoh bagaimana faktor lokal dapat memengaruhi cara aplikasi memilih bagian "terbaik" dari pesan untuk ditampilkan.