Protocollo Multipurpose Internet Mail Extensions
Multipurpose Internet Mail Extensions (MIME) è uno standard Internet che estende il formato email per supportare:
- testo in set di caratteri diversi da US-ASCII;
- allegati non testuali;
- corpi di messaggi multipart; e
- informazioni di intestazione in set di caratteri non ASCII.
SMTP supporta solo caratteri ASCII a 7 bit, il che significa che supporta solo un piccolo numero di lingue. Le lingue basate sull’alfabeto latino vanno bene in SMTP; altre lingue non vengono visualizzate correttamente quando l’email viene consegnata. MIME, tuttavia, estende il supporto dei caratteri ASCII di SMTP in modo che le email che usano altri set di caratteri, immagini e suoni possano essere inviate e visualizzate. In generale, tutti i client email e i server SMTP mappano correttamente i messaggi in formato MIME.
Comprendere le intestazioni MIME
Le intestazioni MIME contengono informazioni sul protocollo.
MIME-Version
Questo indica che il messaggio è formattato in MIME. Appare come:
MIME-Version: 1.0
Content-Type
Questo indica il tipo di contenuto del messaggio, dato come coppia tipo e sottotipo: text/plain, text/html, per esempio. Il tipo multipart può contenere testo, HTML, allegati, immagini, audio, video e così via.
Content-Type: multipart
Content-Transfer-Encoding
Indica se è usato uno schema di codifica binario-to-text sopra quello specificato dal content-type. Se presente, indica quale. Possiamo specificare qui i tipi di codifica 7-bit, 8-bit e binary.
Encoded-Word
Le intestazioni dei messaggi SMTP normalmente usano caratteri ASCII. I caratteri non ASCII devono utilizzare la sintassi MIME encoded word invece di una stringa letterale. Il formato è:
"=? charset ? encoding ? encoded text ?=".
Messaggi Multipart
Un messaggio MIME multipart contiene un delimitatore (boundary) nell’intestazione content-type. Questo delimitatore, che non deve comparire in nessuna delle parti, è inserito tra le parti e all’inizio e alla fine del corpo del messaggio, come segue:
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--
Ogni parte è composta dalla propria intestazione di contenuto e da un corpo.
Sottotipi Multipart
Lo standard MIME definisce diversi sottotipi di messaggi multipart. Il sottotipo è specificato nell’intestazione "Content-Type" del messaggio complessivo.
Di seguito è riportato un elenco dei sottotipi più comunemente usati.
- Mixed: multipart/mixed è usato per inviare file con diversi header "Content-Type" in linea. Se si inviano immagini o altri file facilmente leggibili, la maggior parte dei client mail li visualizzerà in linea.
- Message: Una parte messaggio contiene un’email.
- Digest: digest è un modo semplice per inviare più messaggi di testo. Il content-type predefinito per ogni parte è "message/rfc822".
- Alternative: Il sottotipo alternative indica che ogni parte è una versione "alternativa" dello stesso (o simile) contenuto, ciascuna in un formato diverso indicato dall’intestazione "Content-Type".
Il multipart/alternative è più comunemente usato per le email con due parti, una di testo semplice (text/plain) e una HTML (text/html). La parte di testo semplice garantisce la retrocompatibilità mentre la parte HTML consente l’uso di formattazione e collegamenti ipertestuali. La maggior parte dei client email offre un’opzione per preferire il testo semplice rispetto all’HTML; questo è un esempio di come fattori locali possano influenzare la scelta dell’applicazione su quale parte "migliore" del messaggio mostrare.