2012-06-12 14 views
6

Estoy a punto de enviar un correo electrónico html en un código que puede contener datos de usuario inseguros. Me he dado cuenta de que si html escapo del tema, GMail mostrará el contenido escapado (por lo tanto, si mi asunto es "This & That", que sanitizo como "This & That", Gmail muestra esto último). Lo mismo aplica para Thunderbird. ¿Es seguro asumir que todos los clientes de correo electrónico no necesitan el tema html escapado?¿Los asuntos del correo electrónico deben ser html escapados?

Respuesta

5

No es necesario codificar entidades HTML en una línea de asunto. La razón de la codificación en el cuerpo HTML es si está utilizando XHTML que, como deriva de XML, trata & como un carácter reservado.

Sin embargo, el asunto de un correo electrónico no está en HTML, XML o XHTML. Es solo texto puro. Debido a esto, no es necesario codificar un signo comercial como &. Si lo codifica, porque no está siendo analizado como HTML, se mostrará como codificado.

Si desea incluir caracteres que no sean ASCII (por ejemplo, £), debe codificar todo el 'sobre' (incluido el cuerpo del correo electrónico) como UTF-8.

Por lo tanto, en el código, lo siguiente será mostrado como:

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

Nota: Microsoft Office tiene una aplicación extraña de UTF-8, por lo que no todos los caracteres UTF-8 funcionarán.

+0

Si bien no es necesario codificar en HTML el tema, asegúrese de desinfectarlo para el contexto en el que se encuentra: un encabezado HTTP. Elimina los caracteres de salto de línea como '\ n' y' \ r'! –

2

El campo Asunto es fuera de del "Contenido HTML". No tiene nada que ver con HTML.


Sin embargo, no tengo una referencia para este ...

2

Asunto de no necesitan ser html escaparon sin embargo, que se pueden escapar. La especificación SMTP original definió que los mensajes deben ser ascii (RFC822 Sección 3). Esto se confirmó en RFC2822, sin embargo, RFC2047 define extensiones de encabezado que le permiten codificar los campos de encabezado dentro de mensajes de mímica para permitir texto no ascii.

Este formato de palabra codificada le permite usar codificaciones como utf-8 dentro de los encabezados de correo electrónico. Por ejemplo:

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

Esta es la versión con codificación ISO-8859-1 de "esto es texto". Este método se puede usar para enodear cosas como el símbolo de libra (£) o los caracteres acentuados/no ascii.

Cuestiones relacionadas