La maggior parte delle email inviate oggi è in formato MIME (Multipupose Internet Mail Extensions). Ciò consente di inviare e-mail con versioni di testo normale e RTF/HTML, immagini in linea e allegati. Le estensioni MIME possono essere aggiunte a un messaggio nel formato standard RFC/822 in modo da ottenere la compatibilità con i vecchi sistemi di posta.
Passo 1
Carica il contenuto del messaggio di posta elettronica.
Video del giorno
Passo 2
Controlla l'intestazione "Tipo di contenuto". Se il tipo di contenuto è multiparte (es. "multiparte/misto", "multiparte/alternativa", ecc.) il messaggio avrà più sezioni da analizzare. Se il tipo di contenuto è multiparte, continuare con i passaggi seguenti.
Passaggio 3
L'intestazione Content-Type dovrebbe contenere una stringa univoca utilizzata dal codice che ha generato il messaggio MIME per designare i limiti della parte MIME. Esempio:
Tipo di contenuto: multiparte/misto; confine="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"
La stringa di delimitazione in questo caso è "part_c7161025_fe8a_45f4_83ef_6befcfa5d021".
Passaggio 4
Ogni parte MIME sarà separata dalla stringa di delimitazione preceduta da due trattini ("--") su una riga vuota. Sarà necessario scansionare il messaggio riga per riga cercando i limiti della parte. Tutto il testo tra i confini tranne il CR/LF finale fa parte di quella parte MIME.
Importante: l'ultima parte MIME terminerà con la stringa di delimitazione seguita da altri due trattini.
Esempio:
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Prima parte MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Seconda parte MIME
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Ultima parte MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--
Passaggio 5
Ogni parte MIME deve quindi essere analizzata. Il formato di ciascuna parte MIME è simile al messaggio formattato RFC/822 originale. Conterrà una serie di intestazioni, seguite da una riga vuota, quindi i dati del corpo.
Passaggio 6
Una parte MIME può essere essa stessa multipart, con la propria intestazione "Content-Type" e la propria stringa di confine. Il tuo codice deve analizzare in modo ricorsivo le parti MIME finché non raggiunge i nodi figlio.
Passaggio 7
Una parte MIME può essere semplicemente un allegato binario. In questo caso di solito viene fornita un'intestazione del nome del file, insieme alla codifica di trasferimento. BASE64 è un tipo di codifica popolare. In questo caso l'intero corpo della parte MIME deve essere decodificato in BASE64. Ad esempio, ecco le prime righe di un'immagine JPG allegata:
=NextPart_003_01C755EF.43F2628D Content-Type: image/jpeg; name="testimage.jpg" Content-Transfer-Encoding: base64 Content-Description: testimage.jpg Content-Disposition: attachment; nomefile="testimage.jpg"
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyYQMjIyMjjIRCA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
Passaggio 8
Il corpo HTML del messaggio dovrebbe trovarsi in una sezione MIME con ContentType: Text/Html, all'interno di una sezione ContentType: Multipart/Alternative MIME.
Passaggio 9
Il corpo del messaggio in testo normale dovrebbe trovarsi in una sezione MIME con ContentType: Text/plain, all'interno di una sezione ContentType: Multipart/Alternative MIME.
Cose di cui avrai bisogno
Conoscenza di un linguaggio informatico (es. C++, C#, VB, ecc.).
Conoscenza di base del formato di un messaggio di posta elettronica formattato RFC/822.
Consiglio
Consulta RFC 822 http://www.ietf.org/rfc/rfc0822.txt? numero=822 e RFC 1341 http://www.ietf.org/rfc/rfc1341.txt? numero=1341 per maggiori informazioni. Se stai programmando in C#, un'eccellente libreria gratuita è disponibile su http://www.codeproject.com/csharp/mime_project.asp.