2012-06-12 6 views
6

Sto per inviare un codice html nel codice che potrebbe contenere input utente non sicuri. Ho notato che se fossi riuscito a scappare dall'oggetto, GMail mostrerà il contenuto in escape (quindi se il mio soggetto è "This & That", che io sanizzo come "This & That", Gmail mostra quest'ultimo). Lo stesso vale per Thunderbird. È lecito ritenere che tutti i client di posta elettronica non necessitino dell'esplorazione dell'Html dell'oggetto?Gli oggetti di posta elettronica devono essere salvati in html?

risposta

5

Non è necessario codificare le entità HTML in una riga dell'oggetto. Il motivo della codifica nel corpo HTML è se si utilizza XHTML che, poiché deriva da XML, considera & come un carattere riservato.

Tuttavia, la riga dell'oggetto di un'e-mail non è in HTML, XML o XHTML. È solo testo puro. Per questo motivo, non è necessario codificare una e commerciale come &. Se lo si codifica, poiché non viene analizzato come HTML, verrà visualizzato come codificato.

Se si desidera includere caratteri non ASCII (ad esempio £), è necessario codificare l'intera 'busta' (incluso il corpo dell'email) come UTF-8.

Così, nel codice, di seguito verrà mostrato come:

 | Subject Line | Body 
==================================== 
& | &  |  &  
&  |  &  |  & 
UTF-8 £ |  £  |  £ 
ASCII £ |  n/a  | n/a 
£ | £ |  £ 

NB: Microsoft Office ha una strana implementazione di UTF-8, quindi non tutti i caratteri UTF-8 funzionerà.

+0

Mentre non è necessario codificare il soggetto in HTML, accertarsi di disinfettarlo per il contesto in cui si trova: un'intestazione HTTP. Rimuovi i caratteri di interruzione di riga come '\ n' e' \ r'! –

2

Il campo Oggetto è all'esterno del del "contenuto HTML". Non ha nulla a che fare con l'HTML.


Tuttavia, non ho un punto di riferimento per questo ...

2

Soggetto di non hanno bisogno di essere fuggiti html tuttavia, possono essere sfuggiti. Le specifiche SMTP originali definivano che i messaggi dovrebbero essere ascii (RFC822 Sezione 3). Ciò è stato confermato in RFC2822 tuttavia, RFC2047 definisce le estensioni di intestazione che consentono di codificare i campi di intestazione all'interno dei messaggi mime per consentire il testo non-ascii.

Questo formato di parola codificata consente di utilizzare codifiche come utf-8 all'interno delle intestazioni di posta elettronica. Per esempio:

=?iso-8859-1?q?this=20is=20some=20text?= 

Questa è la versione ISO-8859-1 codifica di "questo è un testo". Questo metodo può essere usato per enodificare cose come il simbolo della sterlina (£) o caratteri accentati/non-ascii.