¿Los asuntos de los correos electrónicos deben tener escape html?

Estoy a punto de enviar un correo electrónico html en código que puede contener información no segura del usuario. He notado que si html escapo el asunto, GMail mostrará el contenido escapado (así que si mi asunto es "This & That", que desinfecto como "This & That", Gmail muestra este último). Lo mismo ocurre con Thunderbird. ¿Es seguro asumir que todos los clientes de correo electrónico no necesitan que el asunto html se escape?

preguntado el 12 de junio de 12 a las 19:06

3 Respuestas

No es necesario codificar entidades HTML en una línea de asunto. El motivo de la codificación en el cuerpo HTML es si está utilizando XHTML que, debido a que se deriva de XML, trata & como un personaje reservado.

Sin embargo, la línea de asunto de un correo electrónico no está en HTML, XML o XHTML. Es solo texto puro. Debido a esto, no necesita codificar un ampersand como &. Si lo codifica, porque no se analiza como HTML, se mostrará como codificado.

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

Entonces, en el código, lo siguiente se mostrará como:

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

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

Respondido el 17 de junio de 12 a las 09:06

Si bien no necesita codificar en HTML el asunto, asegúrese de desinfectarlo para el contexto en el que se encuentra: un encabezado HTTP. Eliminar caracteres de salto de línea como \n y \r! - Michael Butler

No es necesario que los sujetos se escapen en html, sin embargo, se pueden escapar. La especificación SMTP original definía que los mensajes debían ser ascii (RFC822 Seccion 3). Esto fue confirmado en RFC2822 sin embargo, RFC2047 define extensiones de encabezado que le permiten codificar campos de encabezado dentro de mensajes MIME para permitir texto que no sea 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 codificada ISO-8859-1 de "este es un texto". Este método se puede usar para codificar cosas como el símbolo de libra (£) o caracteres acentuados/no ascii.

Respondido 07 Oct 21, 07:10

El campo Asunto es afuera del "contenido HTML". No tiene nada que ver con HTML.


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

Respondido el 12 de junio de 12 a las 19:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.