Cómo ver el código fuente de un correo
- Obtén el mensaje sin procesar desde tu cliente de correo (consulta la tabla de abajo) y pégalo, o suelta en la página el archivo
.emlo.mht. - El resumen muestra From, To, Cc, Subject, Date y Message-ID, ya decodificados. Todos los encabezados lista cada encabezado con su valor decodificado y el original.
- Lee el Cuerpo del mensaje como texto plano o como HTML. El HTML se muestra en un sandbox.
- Adjuntos lista cada archivo con su nombre, tipo, tamaño e ID de contenido, un botón Descargar y una vista previa para las imágenes.
- Estructura MIME muestra cómo se anidan las partes, algo útil cuando parece que falta un adjunto.
| Cliente de correo | Dónde encontrar el código fuente |
|---|---|
| Gmail | Menú del mensaje (⋮) → Mostrar original (Show original) y luego Descargar original |
| Outlook en la web | Menú del mensaje (…) → Ver → Ver origen del mensaje (View message source) |
| Thunderbird | Ver → Código fuente del mensaje (Ctrl+U), o Archivo → Guardar como para obtener un .eml |
| Apple Mail | Visualización → Mensaje → Fuente original (View → Message → Raw Source) |
Qué maneja el decodificador
- Encabezados codificados: encoded words del RFC 2047 en Base64 (
B) y quoted-printable (Q), con las palabras contiguas unidas, en cualquier juego de caracteres que conozca el navegador, además de encabezados en UTF-8 sin codificar. - Nombres de adjuntos en la forma del RFC 2231, como
filename*=UTF-8''Rechnung%20M%C3%A4rz.pdf, y continuaciones divididasfilename*0*=. - Cuerpos en
base64yquoted-printable, decodificados con el juego de caracteres declarado.f=C3=BCrse convierte enfür. - Mensajes anidados: un correo reenviado como adjunto
message/rfc822se recorre igual que el exterior. - Imágenes en línea: las referencias
cid:del HTML se resuelven con las imágenes adjuntas. - Entradas parciales: una parte MIME Base64 suelta, un mensaje completo codificado en Base64 o un cuerpo multipart que empieza en
--boundarysin encabezados.
Un mensaje codificado entero en Base64 suele empezar por UmV0dXJuLVBhdGg6 (Return-Path:) o UmVjZWl2ZWQ6 (Received:). Pégalo tal cual; el decodificador lo desenvuelve primero.
Revisar un mensaje sospechoso
Los encabezados dicen más sobre un intento de phishing que el cuerpo. Qué comparar en Todos los encabezados:
- From frente a Return-Path y Reply-To. Una dirección de respuesta en otro dominio es una señal clásica.
- Authentication-Results, que añade el servidor receptor:
spf=,dkim=ydmarc=con pass o fail. - Las líneas Received, leídas de abajo arriba, muestran el camino desde el servidor de envío hasta el tuyo.
- Los tipos de adjunto: un adjunto
.html,.isoo.zipde un remitente desconocido merece desconfianza, igual que una doble extensión comoinvoice.pdf.html.
Como el contenido remoto está bloqueado, ver aquí el cuerpo HTML no carga píxeles de seguimiento ni confirma que tu dirección se lee. El CSS de la página también se descarta, así que los boletines se ven más sencillos que en un cliente de correo.
Extraer adjuntos con Python
from email import policy
from email.parser import BytesParser
with open("message.eml", "rb") as f:
msg = BytesParser(policy=policy.default).parse(f)
print(msg["Subject"])
for part in msg.iter_attachments():
name = part.get_filename()
with open(name, "wb") as out:
out.write(part.get_payload(decode=True))
print("saved", name)
policy.default decodifica los encabezados con encoded words, así que msg["Subject"] ya es legible. En un uso real, sanea name antes de escribir, porque viene del remitente. Encontrarás más sobre cómo se codifican los adjuntos en Base64 en el correo electrónico, y el codificador MIME Base64 produce el formato de 76 columnas.
Limitaciones conocidas
- Los archivos
.msgde Outlook no son compatibles. Una partewinmail.dat(TNEF) aparece como adjunto, pero no se desempaqueta. - Los enlaces del cuerpo HTML no hacen nada, a propósito.
- Los mensajes con un número desorbitado de partes MIME se cortan con un aviso.
Preguntas frecuentes
¿Cómo abro un archivo .eml sin Outlook?
Suéltalo en esta página. Se muestran los encabezados, los cuerpos de texto y HTML y todos los adjuntos, que se pueden descargar uno a uno. Los archivos de hasta 64 MB se leen directamente en el navegador.
¿Qué significa =?UTF-8?B?…?= en la línea de asunto?
Es una encoded word del RFC 2047: B significa que el texto intermedio está en Base64 y Q indica una variante de quoted-printable. =?UTF-8?B?UmVjaG51bmcgTcOkcno=?= se decodifica como Rechnung März. El decodificador muestra el valor decodificado y el original uno junto al otro.
¿Es seguro ver aquí un correo sospechoso?
El cuerpo HTML se renderiza en un marco aislado (sandbox) sin scripts, formularios ni enlaces que funcionen, y las imágenes remotas y los píxeles de seguimiento están bloqueados, así que abrirlo no le dice nada al remitente. Los adjuntos se listan y se ofrecen para descargar, pero nunca se abren.
¿Puede abrir archivos .msg de Outlook?
No. Un archivo .msg es un formato binario de Outlook, no MIME. Abre el mismo mensaje en Outlook en la web, elige ver el código fuente del mensaje y pega ese texto aquí.