Le pagine web, per essere davvero accessibili, devono essere leggibili in assenza dei CSS: le e-mail – che possono diventare responsive quanto i siti – come fallback hanno il formato solo-testo. La settimana scorsa ho introdotto il tema del design responsivo per la posta elettronica e, prima di procedere con altri aspetti pragmatici che riguardano il markup, voglio spiegare come assicurarsi che i messaggi recapitati non siano illeggibili. Concettualmente basta inviare le e-mail nel doppio formato HTML e solo-testo o text/plain.

Mio malgrado, sono costretto ad affrontare degli aspetti abbastanza tecnici che potrebbero non essere alla portata di tutti: i contenuti sul web sono identificati da un Content-type che ne definisce la natura. Le pagine e le e-mail in HTML sono contraddistinte dalla dicitura text/html, i messaggi in testo semplice da text/plain. Inviare contemporaneamente la stessa e-mail in HTML e solo-testo non significa spedire due messaggi distinti, ma creare lo stesso in entrambi i formati. Perché ciò sia possibile, esiste un “contenitore”.

Il destinatario riceverà un’unica e-mail, visualizzandola in uno dei due formati a seconda del client utilizzato. Il problema è generarla: il Content-type è definito nelle intestazioni – ovvero, dei meta-dati che non sono mostrati nel corpo del messaggio – ma è impossibile specificare in esse sia text/html, sia text/plain. Occorre definire la tipologia del contenuto come multipart/alternative con un elemento boundary che sarebbe una stringa cifrata in md5 oppure altri algoritmi di crittografia. Più semplice a farsi che a dirsi.

Non temete se, finora, non avete capito come fare. Fra due settimane – prima della conclusione di questa mini-rubrica – proporrò un esempio d’invio delle e-mail con la funzione integrata in PHP, mostrando esattamente il codice necessario. Quello che intendo illustrare oggi è soltanto il concetto: è importante adottare il responsive design per la posta elettronica, però il destinatario deve leggere i messaggi ricevuti. Per escludere qualunque inconveniente, è opportuno definire il Content-transfer-encoding come quoted-printable.

Potrei “tediarvi”, spiegando cos’è e quali sono gli altri valori assegnabili… ma io suppongo che sia sufficiente spiegare che GMail richiede il quoted-printable, perché i messaggi siano visualizzati. Quella di Google non è l’unica webmail a specificarlo come requisito, quindi lo consiglio come fosse uno standard di fatto. Definite tutte le intestazioni, possiamo passare a redigere il corpo del messaggio: è qui che – preceduto dal boundary precedentemente generato – bisogna inserire il contenuto della e-mail in HTML e solo-testo.

Proponendo un esempio pratico, specificherò gli elementi necessari alla funzione mail() del PHP — nulla vieta d’utilizzare ASP. L’importante è precedere e concludere il corpo del messaggio in HTML e solo-testo col boundary. Mi rendo conto che, se non siete ancora dei professionisti, tutto ciò possa sembrare complicatissimo. In realtà, tecnicamente è piuttosto banale e se non ho voluto aggiungere subito il codice necessario è perché sarebbe stato eccessivo. La settimana prossima illustrerò come integrare HTML e CSS nelle e-mail.

Photo Credit: gajman via Photo Pin (CC)