MIME (Multipurpose Internet Mail Extensions) è uno standard proposto dai laboratori Bell Communications nel 1991 per estendere le possibilità limitate della posta elettronica (mail) e soprattutto per permettere di inserire dei documenti (immagini, suoni, testo, ecc.) in un messaggio. È definito all'origine dai RFC 1341 e 1342 del giugno 1992.
MIME propone di descrivere, grazie a delle intestazioni, il tipo di contenuto del messaggio e la codifica usata. MIME apporta alla messaggeria le seguenti funzionalità: possibilità d'avere più oggetti (allegati) in uno stesso messaggio, una lunghezza di messaggio illimitata, l'uso di set di caratteri (alfabeti) oltre a quelli del codice ASCII; l'uso di testi arricchiti (sotto forma di messaggi, tipi di carattere, colori, ecc.) e di allegati binari (eseguibili, immagini, file audio o video, ecc.), eventualmente composti da più parti.
MME usa delle direttive d'intestazione specifiche per descrivere il formato utilizzato nel corpo di un messaggio, per permettere al client di messaggeria di poterlo interpretare correttamente:
MIME-Version, si tratta della versione dello standard MIME usata nel messaggio. Attualmente esiste solo la versione 1.0;
Content-type, descrive il tipo e i sotto-tipi di dati. Può avere un parametro « charset », separato da un punto virtuale, che definisce il set di caratteri usati;
Content-Transfer-Encoding, definisce la decodifica usata nel corpo del messaggio;
Content-ID, rappresenta un identificativo unico di parte del messaggio;
Content-Description, fornisce delle informazioni complementari sul contenuto del messaggio;
Content-Disposition, definisce i parametri dell'allegato, soprattutto il nome associato al file attraverso l'attributo filename.
Il type MIME, usato nell'intestazione Content-Type, è utilizzato per classificare i documenti allegati ad un messaggio. Un type MIME è costituito nel modo seguente:
Content-type: type_mime_principale/sotto_type_mime
. Ad esempio, un'immagine GIF avrà il seguente type MIME:
Content-type: image/gif
.
I principali tipi di dati, detti talvolta, tipi di dati discreti, sono i seguenti:
Text, dati testuali leggibili. text/rfc822 [RFC822]; text/plain [RFC2646]; text/html [RFC2854] .
Image, dati binari che rappresentano delle immagini digitali image/JPEG; image/GIF; image/PNG.
Audiom dati digitali sonori audio/basic; audio/WAV.
Video, dati video, video/MPEG.
Application, altri dati binari, application/octet-stream; application/PDF.
Il type MIME è anche usato nel Web, per classificare i documenti trasferiti dal protocollo HTTP. Al momento di una transazione tra un server web e un navigatore internet, il server invia in primo luogo il type MIME del file inviato al navigatore, affinché quest'ultimo possa sapere come visualizzare il documento.
Per trasferire dei dati binari, MIME propone cinque formati di codifica utilizzabili nell'intestazione Transfer-encoding:
7bit, formato testo codificato su 7 bit (per i messaggi non accentuati);
8bit, formato test 8 bit;
quoted-printable, formato Quoted-Printable, raccomandato per i messaggi che usano un alfabeto codificato su più di 7 bit (ad esempio presenza di accenti);
base64, formato Base 64, raccomandato per l'invio di file binari in allegato;
binary, formato binario, sconsigliato.
MIME, essendo molto aperto, permette di usare altri formati di codifica come i seguenti:
BinHex (formato proprietario di Apple);
xxencode.
L'uso dell'intestazione Transfer-encoding permette di precisare un formato di decodifica per il corpo del messaggio, ma non risolve il problema della decodifica delle intestazioni stesse (ad esempio l'oggetto del messaggio).
Così, per permettere di decodificare le intestazioni con degli alfabeti di più di 7 bit, e permettere ad esempio d'avere un oggetto della mail accentuato, lo standard MIME propone il formato seguente:
=?charset?decodifica?risultato?=
.
Charset rappresenta il set di carattere usato;
Decodifica definisce la decodifica voluta con due valori possibili:
Q per quoted-printable;
B per base64.
Risultato: testo codificato secondo il metodo specifico. Ecco qui sotto un esempio di codifica in Quoted-Printable con «Realtà» come oggetto del messaggio:
Subject: Realt =?ISO-8859-1?Q?=E0=3F?=
Attraverso il type MIME multipart lo standard MIME permette di definire dei messaggi compositi, cioè dei messaggi con più allegati, eventualmente inclusi. Per fare questo, MIME permette di definire un separatore detto boundary. Si tratta di una catena arbitraria definita nell'attributo dell'intestazione Content-type:
Content-Type: multipart/mixed;
boundary="------------020005090303070203010601"
Ogni separatore delimita un contenuto cominciando dalle intestazioni Content-Type e Content-Encoding. È essenziale che il valore di questo separatore non esista nel contenuto del messaggio. Esistono differenti tipi di separatore:
Multipart/mixed definisce una lista di più elementi;
Multipart/alternative definisce diverse alternative per una stessa informazione, ad esempio un messaggio in formato testo e HTML. Se il client di messaggeria è capace ed è configurato per la visualizzazione con un formato, visualizzerà la versione HTML, altrimenti userà la versione testo.
Multipart/parallel definisce dei dati presentati nello stesso momento (suono e immagine ad esempio);
Multipart/signed definisce una firma digitale per i dati del messaggio;
Multipart/related definisce delle informazioni legate fra loro.
I tipi MIME sono normalizzati da un organismo chiamato IANA (Internet Assigned Numbers Authority). Ecco una lista non esaustiva dei tipi MIME più diffusi:
Tipo MIME | Tipo di file | Estensione associata |
---|---|---|
application/atom+xml | File di formato ATOM | atom |
application/iges | FileCAS | iges |
application/javascript | File Javascript | js |
application/dxf | File AutoCAD | dxf |
application/mp4 | File MPEG4 | mp4 |
application/iges | Formato di scambio CAO IGES | igs,iges |
application/octet-stream | File binari non interpretati | bin |
application/msword | File da lavoro in formato Microsoft Word | doc |
application/pdf | File Adobe Acrobat | |
application/postscript | File PostScript | ai,eps,ps |
application/rtf | Formato di testo arricchito | rtf |
application/sgml | File SGML | sgml |
application/vnd.ms-excel | File tabellari in formato Microsoft Excel | xls |
application/vnd.ms-powerpoint | File presentazione in formato Microsoft Powerpoint | ppt |
application/xml | fichier XML | xml |
application/x-tar | File compressi tar | tar |
application/zip | File compressi ZIP | man |
audio/basic | File audio basici | au,snd |
audio/mpeg | File audio MPEG | mpg,mp3 |
audio/mp4 | File audio MPEG-4 | mp4 |
audio/x-aiff | File audio AIFF | aif,aiff,aifc |
audio/x-wav | File audio Wave | wav |
image/gif | Immagini gif | man |
image/jpeg | Immagini JPEG | jpg,jpeg,jpe |
image/png | Immagini PNG | png |
image/tiff | Immagini Tiff | tiff,tif |
image/x-portable-bitmap | File Bitmap PBM | pbm |
image/x-portable-graymap | File Graymap PBM | pgm |
image/x-portable-pixmap | File Pixmap PBM | ppm |
multipart/x-zip | File archivio zip | zip |
multipart/x-gzip | File archivio GNU zip | gz,gzip |
text/css | Fogli di stile | css |
text/csv | File di testo con separazione dei valori | csv |
text/html | File HTML | htm,html |
text/plain | File di testo senza formattazione | txt,g,h,c,cc,hh,m,f90 |
text/richtext | File di testo arricchiti | rtx |
text/rtf | File di testo in formato Rich Text Format | rtf |
text/tab-separated-value | File di testo con separazione di valori | tsv |
text/xml | Files XML | xml |
video/h264 | Video H.264 | h264 |
video/dv | Video in formato DV | dv |
video/mpeg | Video MPEG | mpeg,mpg,mpe |
video/quicktime | Video QuickTime | qt,mov |
video/msvideo | Video Microsoft Windows | avi |
Lista ufficiale dei tipi MIME (IANA - ).
RFC principali:
RFC 2045, MIME Part One, Format of Internet Message Bodies;
RFC 2046, MIME Part Two, Media Types;
RFC 2047, MIME Part Three: Message Header Extensions for Non-ASCII Text;
RFC 2048, MIME Part Four: Registration Procedures;
RFC 2049, MIME Part Five: Conformance Criteria and Examples.
RFC annexes:
RFC 1524, The formal description of mailcap files. Mailcap files describe how to handle media types;
RFC 2015, MIME Security with Pretty Good Privacy (PGP);
RFC 2110, MIME E-mail Encapsulation of Aggregate Documents, such as HTML (MHTML);
RFC 2111, Content-ID and Message-ID Uniform Resource Locators;
RFC 2112, The MIME Multipart/Related Content-type;
RFC 2183, Defines the syntax and sematics of the "Content-Disposition" header to convey presentational information;
RFC 2184, MIME Parameter Value and Encoded Word Extensions: Character Sets, Languages, and Continuations.
Foto: © Titov Nikolai - Shutterstock.com