Visor EML y decodificador MIME

Pega un mensaje o abre un archivo .eml y pulsa Inspeccionar localmente: las cabeceras, el cuerpo, una vista HTML aislada y cada parte MIME —con Guardar para los bytes decodificados— permanecen en la página y nada se sube.

Procesamiento local ·
*.eml

Cómo leer un mensaje .eml sin subirlo a ningún servidor

Pega el origen de un mensaje en el cuadro o abre un archivo .eml del disco y pulsa Inspeccionar localmente. Toda la lectura ocurre en la pestaña: no se sube nada y la página no descarga nada mientras trabaja. El resultado se reparte entre las cabeceras decodificadas, el cuerpo en texto plano, una vista HTML aislada y la lista de las partes MIME, de modo que un mensaje con texto, HTML y adjuntos se lee parte por parte.

Las cabeceras y los cuerpos se decodifican con el juego de caracteres que declara cada parte: un asunto enviado como =?windows-1252?Q?Rechnung_=80_offen?= se lee «Rechnung € offen», un cuerpo GB2312 se lee 后台任务已完成。 y el UTF-8 conserva sus acentos. Las partes se cortan línea a línea en la frontera MIME en lugar de buscar ese texto en cualquier posición del cuerpo, así que una línea de guiones dentro de un texto citado ya no corta el mensaje antes de tiempo.

  1. Pega el origen del mensaje en el cuadro o suelta un archivo .eml sobre la zona de carga; el nombre del archivo aparece junto a la zona y el texto se carga en el cuadro.
  2. Pulsa Inspeccionar localmente. Las métricas cuentan cabeceras, partes, adjuntos y tamaño de entrada, y la tarjeta de metadatos muestra De, Para, Asunto, Fecha e ID del mensaje: un campo que el mensaje no trae aparece con un guion.
  3. Lee el cuerpo en texto plano: Copiar lo lleva al portapapeles y Descargar lo guarda. Un archivo elegido da nombre a la descarga (win1252-body.txt para win1252.eml) y un mensaje pegado se guarda como message-body.txt.
  4. Revisa la vista HTML: se dibuja en un marco aislado con los recursos externos desactivados, así que un píxel de seguimiento escrito en el HTML no llega a solicitarse.
  5. Abre la lista de adjuntos: cada parte muestra su nombre, su tipo MIME, su tamaño ya decodificado y su codificación de transferencia, y Guardar escribe en disco los bytes decodificados con el nombre original.

Qué decodifica el visor y dónde se detiene

Qué lee el decodificador

El juego de caracteres se toma de la cabecera Content-Type de cada parte, no de la página: windows-1252 («Betrag: €12,50 – fällig am Montag.»), GB2312/GBK (后台任务已完成。), UTF-8 y una etiqueta desconocida que recurre a una lectura tolerante de los bytes salen como texto legible. Las palabras codificadas de las cabeceras (RFC 2047) se decodifican y el espacio entre dos palabras codificadas contiguas se elimina como pide la norma, así que «Deploy finished» no queda con un espacio de más.

La estructura se sigue línea a línea: una parte multipart se corta solo donde una línea es exactamente --frontera (con espacios finales opcionales), así que una respuesta citada que contiene ----b1---- conserva su texto. Una cabecera multipart sin parámetro boundary, un boundary="" sin valor y un boundary entre comillas simples ya no pierden el cuerpo: se muestra como texto. Un mensaje reenviado como message/rfc822 se analiza como mensaje, su cuerpo aparece en el panel de texto y el contenedor se lista en la tabla de adjuntos; un mensaje anidado más de doce niveles se aplana a texto en lugar de desaparecer.

La vista HTML

La vista conserva el marcado propio del mensaje y sus reglas <style>, pero elimina lo que podría cargar o ejecutar algo: script, iframe, object, embed, link, meta, base, form y los controles de formulario se borran, los atributos on* se descartan y cada atributo de URL (src, href, poster, background y el resto) apunta a un fragmento inerte salvo que sea una URL data:. srcset conserva solo sus candidatas en línea. Eso es lo que significa aquí «recursos externos desactivados»: ante 25 trucos de seguimiento distintos —un píxel simple, un srcset, @import y url() dentro de un bloque de estilo, un estilo en línea—, la vista corregida no hizo ninguna petición al servidor de seguimiento, mientras que la versión anterior hacía cuatro.

Es un filtro para leer correo, no un antivirus. No ejecuta scripts, no descarga contenido remoto y no puede decir si un enlace del mensaje es seguro.

Dónde se detiene el visor

El visor decodifica el mensaje tal como está escrito; no verifica firmas S/MIME ni PGP, no descifra mensajes protegidos y no repara un archivo que no sea un mensaje. Las partes de texto se unen en el orden en que aparecen, así que un mensaje con varias partes text/plain las muestra una tras otra. Los adjuntos se guardan como bytes y no se abren, y no hay exportación JSON: cabeceras, cuerpo, vista previa y lista de partes es todo lo que produce la página.

Herramientas recientes: