¿Se admite JavaScript en un mensaje de correo electrónico?

146

¿Se admite JavaScript en un mensaje de correo electrónico?

senthil
fuente
38
Esto no merece un -1
kikito
1
¿El programa de correo electrónico objetivo es Outlook? Thunderbird? GMail? Hotmail? Todas las anteriores? ¿Otros? Los diferentes programas de correo electrónico procesan los correos de manera diferente.
WonderWorker
1
Acabo de ver que los chicos de Rockettheme están haciendo una cuenta regresiva, así que días, horas, minutos y segundos, y los gráficos también están animando ... increíble lo que es posible ahora. No estoy seguro de qué otra forma podrían estar haciendo esto. Observado en el cliente de correo mac.
aterrizó el
2
Encontré un dominio y obtuve esto - motionmailapp.com
aterricé el
3
@landed Acabo de ver lo mismo en un correo electrónico de WordPress. Resulta que es simplemente un GIF generado dinámicamente que inicia la cuenta regresiva desde que se recupera (y se restablece después de 45 segundos; supongo que si no ha hecho clic en 45 segundos, probablemente ya haya cerrado el correo electrónico).
Lionel Rowe

Respuestas:

49

http://en.wikipedia.org/wiki/Comparison_of_e-mail_clients

Los clientes antiguos , como Lotus Notes, Mozilla Thunderbird, Outlook Express y Windows Live Mail, parecen haber admitido algún tipo de ejecución de JavaScript. Nada más lo hace.

Parece una mala idea de seguridad, por lo que esperaría que esta sea una característica que no siempre estará disponible, incluso en estos clientes.

MatthewMartin
fuente
9
"Lotus Notes, Mozilla Thunderbird, Outlook Express y Windows Live Mail parecen admitir algún tipo de ejecución de JavaScript": en los scripts de plantilla de mensaje, no en los correos electrónicos recibidos.
Quentin
2
Wow, estos clientes ahora son tan viejos que los enlaces sobre cómo se comportaban se están extinguiendo, no puedo confirmar ni negar nada de eso. Seis años después, me sorprendería si todavía hay un único cliente de correo electrónico en uso que tenga algún tipo de ejecución de script habilitada a propósito.
MatthewMartin
18

No, en general, los lectores de correo electrónico no permiten JavaScript.

jsight
fuente
2
¿Qué tal gmail en el navegador Chrome?
Nicolas S.Xu
1
@ NicolasS.Xu Gmail elimina el JavaScript del correo antes de entregarlo al navegador. Entonces JS no funciona. Probé Gmail en Firefox 56 y Chrome 61. También verifiqué el código en las herramientas para webmasters, se eliminó el código JS.
Christopher K.
18

Otros respondedores han sugerido que la respuesta es "No".

Por otro lado, un archivo adjunto html probablemente se abrirá en un entorno que ejecuta Javascript.

EDITAR: Se sugirió que no he respondido correctamente la pregunta, así que aquí va un esfuerzo más completo.

Resumen: esperaría que muchos o la mayoría de los usuarios que reciben un correo electrónico con formato html que contenga Javascript incrustado lo vean ejecutarse y realicen pruebas para confirmar que esto es cierto en algunos entornos. Pero Javascript será bloqueado para algunos usuarios.

Los protocolos (específicamente RFC2854) abordan explícitamente las secuencias de comandos (dentro del tipo de cuerpo del mensaje de texto / html) con la declaración de que:

Además, la introducción de lenguajes de secuencias de comandos y capacidades interactivas en HTML 4.0 introdujo una serie de riesgos de seguridad asociados con la ejecución automática de programas escritos por el remitente pero interpretados por el destinatario. Los agentes de usuario que ejecutan dichos scripts o programas deben tener mucho cuidado para asegurarse de que el software no confiable se ejecute en un entorno protegido.

Entonces, los protocolos son compatibles con Javascript, pero ¿qué agentes de usuario lo hacen?

Mi (antiguo) lector de correo electrónico utiliza una tabla para especificar qué software de visor usar para cada tipo MIME, desviando contenido html a mi navegador web favorito. Casi todos los navegadores web actuales admiten Javascript (¡y algunos emiten advertencias graves cuando intenta desactivarlo!) ¿Los agentes de correo electrónico modernos incluyen intérpretes html internos y, si es así, está activado o desactivado JavaScript? Verifiqué la documentación de Thunderbird y descubrí que javascript parece estar activado de manera predeterminada, pero puede desactivarse: http://codeverge.com/mozilla.support.thunderbird/simple-html-tags-reference-docume/2030160

He notado que algunos (¿muchos?) Usuarios ahora acceden a su correo electrónico directamente desde un navegador (el correo web es una de esas plataformas) en lugar de ejecutar un software de correo electrónico separado. Todas las plataformas que he probado hasta ahora ejecutan cualquier Javascript incrustado en el html del mensaje de correo electrónico. Sin embargo, algunos de estos entornos, dependiendo de la configuración de seguridad del usuario, no obtienen automáticamente enlaces externos (Javascript o imágenes u otros) y, por lo tanto, solo pueden ejecutar Javascript externo desde un archivo que se incluye como un archivo adjunto al mensaje. Lo mismo sería cierto para cualquier lector de correo electrónico fuera de línea en un dispositivo sin una conexión a Internet actual.

Lo anterior se aplica a javascript incrustado en la parte principal del mensaje del cuerpo del correo electrónico. También se puede tener html explícitamente como un "archivo adjunto", que si se guarda y luego se abre se mostrará en un navegador web, en el que Javascript está disponible con una probabilidad muy alta. Por lo tanto, uno podría incluir una segunda copia del correo electrónico habilitado para JavaScript como un archivo adjunto html con un texto alternativo / cuerpo principal y / o etiqueta en el texto principal / html que dirige al usuario al archivo adjunto.

He estado pensando en esto porque algunos de mis conocidos insisten en enviarme "tarjetas de felicitación por correo electrónico" que consisten en un mensaje de texto que me dirige a un enlace que me parece tan insatisfactorio que me niego incluso a considerar cargarlo solo por principio . He escrito y enviado tarjetas de felicitación por correo electrónico con gráficos y música interactivos e incluso juegos que utilizan JavaScript incrustado y estoy satisfecho con el resultado.

Por lo tanto, mantengo que la respuesta correcta es "Sí" tanto porque los protocolos abordan específicamente las secuencias de comandos como porque todos los agentes de correo electrónico que uso personalmente corrieron el Javascript en mis correos electrónicos de prueba.

Robert Morewood
fuente
2
No proporciona ninguna lista concreta de clientes en los que haya probado JS con éxito y con los cuales código JS. Verifiqué Thunderbird 52.4.0 con la configuración "HTML original" e ignoré el JS <script> document.write('test'); </script>en mis correos electrónicos de prueba. Lo mismo para Outlook para Android 2.2.44, K-9 para Android 5.208, Gmail webmailer (probado 06.11.2017) y Roundcube webmailer 0.9.5. Por lo tanto, estaría de acuerdo con los que dicen que no funciona en la mayoría de los clientes (modernos). Es cierto que la mayoría de los usuarios usan webmailers, pero por una buena razón, estos parecen despojar a JS de los mensajes antes de entregarlos al navegador.
Christopher K.
1
Como su enlace a la "documentación" de Thunderbird no es documentación sino que se refiere a alguna pregunta aportada por el usuario, busqué documentación oficial y encontré esto: developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Releases / 3 - Dice que JS en los correos electrónicos se cayó en Thunderbird 3.
Christopher K.
14

Respuesta corta

No


Respuesta descriptiva

Depende. Pero no se garantiza que el correo electrónico se comporte como usted lo desea. Diferentes clientes de correo electrónico manejan JS de manera diferente. La mayoría de los clientes de correo electrónico más nuevos no admiten ninguno de ellos, ya que es potencialmente muy peligroso admitir la ejecución de scripts en una aplicación de escritorio que contiene gran parte de su información personal.

Tuve un caso de uso en el que necesitaba usar JS en un correo electrónico. También probé en el cliente web de Outlook y el cliente de escritorio, y resulta que Outlook simplemente borra la parte del script de su correo electrónico HTML. Puede haber algún otro cliente de correo electrónico que admita la ejecución de JS, pero dado que no puede controlar el cliente donde se vería su correo electrónico en la máquina del cliente, no es una buena idea incrustar ningún script en el correo electrónico HTML.

Se recomienda mantener su correo electrónico HTML lo más simple posible, sin JS, y con el mínimo CSS que pueda hacer (porque, de nuevo, diferentes clientes de correo electrónico también tienen soporte variable para CSS), por ejemplo: el cliente web de Outlook ni siquiera reconocía un HTML etiqueta de botón en el correo electrónico. Tuve que usar una etiqueta de anclaje y algo de CSS encima para imitar la visualización de un botón.


En pocas palabras: no confíe en Javascript cuando trabaje con contenido de correo electrónico HTML.

Ketan R
fuente
4

No va a obtener JavaScript ejecutable en un servidor y en un cliente de correo. Pero los correos electrónicos SÍ admiten enlaces, siempre puede vincular a su contenido dentro de un correo electrónico.

Sam152
fuente
3

Para la mayoría de los clientes de correo, no.

Mervyn
fuente
2

Puede ser, pero los clientes de correo no lo leerán y los servidores de correo pueden rechazarlo. Así que déjalo afuera.

Ed B
fuente
1

Javascript no es compatible con los correos electrónicos.

Neil Knight
fuente
2
Eso no es verdad. Al menos Outlook y Outlook Express admiten Javascript, que es una de las muchas razones para evitarlos (por razones de seguridad).
PauliL
1
@PauliL: Eso depende si la configuración de la zona de Sitios restringidos lo permite.
Neil Knight
0

Puede ver un correo electrónico con JavaScript que funciona con Windows Live Mail, pero no puede agregar JavaScript a un nuevo correo electrónico que desea enviar. JavaScript también funciona con archivos .eml guardados. Mozilla Thunderbird versión 60.7.0 no puede ver ni agregar JavaScript. (Si guarda un archivo eml con Thunderbird, el código funcionará si el archivo se carga con Live Mail). Puede enviar un correo electrónico con JavaScript utilizando el código PHP. Algunos sitios web de correo electrónico pueden admitirlo, pero los pocos que utilicé no lo hacen. (AOL, uk2.net, GMail)

Mark Antony Agius
fuente