Il messaggio di posta elettronica si compone essenzialmente di 2 sezioni, la sezione di intestazione e la sezione dedicata al corpo della mail. Vi sono inoltre altre sezioni di intestazione che sono presenti in determinati casi, ad esempio se la mail contiene un allegato.
Le intestazioni contengono informazioni che vengono interpretate dal client di posta, esse servono per stabilire da chi è stata inviata la mail, a chi è diretta, se ci sono destinatari multipli e se sono presenti allegati. Altre intestazioni servono al client per stabilire il formato della mail, esso infatti puo essere anche in formato HTML, il tipo di codifica di eventuali allegati e il formato stesso dell'allegato.
Queste intestazioni non sono visibili quando leggiamo la nostra mail, ma alcuni dati ci vengono comunque proposti come il mittente e l'ora di invio.
Possiamo vedere le intestazioni della mail se scegliamo di visualizzare il sorgente della mail, osservando le intestazioni notiamo diversi campi tar cui: “Mail from:” in questo campo troviamo il mittente della mail, “Mail to:” qui troviamo il destinatario o i destinatari della mail, “Bcc:” qui troviamo gli indirizzi di altri eventuali destinatari che essendo nella lista Bcc (Blind Carbon Copy) riceveranno una copia della mail senza vedere tutti i destinatari al contrario dei destinatari contenuti nel Mailto ma vedranno solo il mittente. Altri campi sono il “Return path:” esso contiene un indirizzo per le risposte, ad esempio il mittente puo specificare un indirizzo diverso da quello di invio per ricevere le risposte, infatti al momento in cui noi rispondiamo (reply) alla mail invieremo la nosta risposta a quest'indirizzo, se non è specificato questo campo conterrà l'indirizzo di invio, “Subject:” questo valore è facoltativo, è l'oggetto della mail il quale può non essere specificato.
Altre intestazioni che normalmente non vediamo senza visualizzare il sorgente sono “Received from:” in esso troviamo i nomi dei vari sever SMTP attraverso i quali il messaggio è passato, troviamo inoltre la data e l'ora di ricezione, questo può essere utile per fare un po' la storia del messaggio potendone tracciare il percorso potendo quindi individuare eventuali problemi relativi all'invio.
Da notare che troviamo diverse intestazioni “Received” infatti ognuna rappresenta un passaggio.
Veniamo ora al corpo della mail vero e proprio, come abbiamo detto esso può essere anche in formato HTML, in tal caso l'intestazione “contenent type” conterrà “text/html” cosicchè il client saprà che il testo dovrà essere interpretato.
Dopo il testo della mail sia in formato html o in testo semplice troviamo la sezione dedicata agli eventuali allegati, essi vengono fusi nella mail e codificati con la tabella ASCII a 7 bit, insieme ai bit dell'allegato troviamo altre informazioni sull'allegato come il nome del file e il suo tipo, per esempio JPEG se si tratta di un immagine.