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 permetter di inserire dei documenti (immagini, suoni, testo, …) in un messaggio. E' 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 codificazione usata.
MIME apporta alla messaggeria le seguenti funzionalità :
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 :
Il type MIME, usato nell'intestazione Content-Type , è utilizzato per typare i documenti allegati ad un messaggio. Un type MIME è costituito nel modo seguente :
Content-type: type_mime_principale/sotto_type_mimeAd esempio, un'immagine GIF avrà il seguente type MIME :
Content-type: immagine/gif
I principali types di dati, detti talvolta, « types di dati discreti », sono i seguenti :
Il type MIME è anche usato nel Web, per typare i documenti trasferiti dal protocollo HTTP. Al momento di una transazione tra un server web e un navigatore internet, il server web 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 :
MIME, essendo molto aperto, pemette di usare altri formati di codificazione come i seguenti :
L'uso dell'intestazione Transfer-encoding permette di precisare un formato di decodificazione per il corpo del messaggio, ma non risolve il problema della decodificazione delle intestazioni stesse (ad esempio l'oggetto del messaggio).
Così, per permettere di decodificare le intestazioni con degli alfabeti di più di 7 bits, e permettere ad esempio d'avere un oggetto della mail accentuato, lo standard MIME propone il formato seguente :
=?charset?decodificazione?risultato?=
Subject: Comment =?ISO-8859-1?Q?=E7a_marche_=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. E' essenziale che il valore di questo separatore non esista nel contenuto del messaggio.
Esistono differenti tipi di separatore :
I types MIME sono normalizzati da un organismo chiamatoIANA (Internet Assigned Numbers Authority). Ecco una lista non esaustiva dei types MIME più diffusi
| Type MIME | Type 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 |