Standard MIME (Multipurpose Internet Mail Extensions)

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.

Introduzione al MIME

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.

Principali Tipi MIME

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.

Formati di codifica

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);

uuencode;

xxencode.

Decodifica dell'intestazione

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?=

Messaggi compositi

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.

Liste dei tipi MIME

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 pdf
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

Ulteriori informazioni

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

I nostri contenuti sono creati in collaborazione con esperti di high-tech, sotto la direzione di Jean-François Pillou, fondatore di CCM.net. CCM è un sito di high-tech leader a livello internazionale ed è disponibile in 11 lingue.
Il documento intitolato « Standard MIME (Multipurpose Internet Mail Extensions) » dal sito CCM (it.ccm.net) è reso disponibile sotto i termini della licenza Creative Commons. È possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finché questa nota appaia chiaramente.