Decodificador MIME

Pega el código fuente completo de un correo - cabeceras y cuerpo - y velo desglosado: cada cabecera, la estructura MIME, la codificación de transferencia y el charset de cada parte, el cuerpo text/HTML decodificado y cualquier adjunto. Todo funciona en tu navegador; no se sube nada.

Resultado:
Pega un correo en bruto arriba y pulsa «Decodificar mensaje». Consejo: en la mayoría de los clientes de correo usa «Mostrar original» / «Ver código fuente», o guarda el mensaje como un archivo .eml, para obtener el texto en bruto.

¿Qué es un decodificador MIME y qué significan todas estas cabeceras?

Cada correo que recibes es, por debajo, un documento de texto plano que sigue una estructura estricta definida por MIME (Multipurpose Internet Mail Extensions) y el formato de mensaje más antiguo RFC 5322. Cuando abres el “código fuente en bruto” o un archivo .eml guardado, esa estructura se hace visible: un bloque de cabeceras, una línea en blanco y luego el cuerpo. Este decodificador divide cualquier mensaje que pegues en esas piezas — cabeceras, el árbol MIME, la codificación de transferencia y el charset de cada parte, el text/HTML decodificado y cada adjunto — enteramente en tu navegador. No se sube nada a ningún servidor; el análisis se ejecuta en tu propio ordenador.

1. La forma general de un mensaje

Un mensaje tiene dos secciones separadas por la primera línea vacía:

Header-Name: valor de la cabecera Another-Header: otro valor (una línea de continuación plegada) <línea en blanco> El cuerpo empieza aquí…
  • Las cabeceras describen el mensaje: quién lo envió, cuándo, el asunto y — algo crucial para MIME — cómo está codificado y estructurado el cuerpo.
  • La línea en blanco es la frontera entre las cabeceras y el cuerpo. La primera línea vacía termina el bloque de cabeceras.
  • El cuerpo es todo lo que viene después. En un mensaje moderno, el cuerpo normalmente no es texto plano, sino una estructura MIME con varias partes.

2. Cómo se escriben las cabeceras

Dos reglas suelen confundir al leer el código fuente en bruto:

  • Plegado (folding). Una cabecera larga puede dividirse en varias líneas; cada línea de continuación empieza con un espacio o un tabulador. Al leerlas, esas líneas se vuelven a unir en un solo valor (“desplegado”).
  • Encoded-words (RFC 2047). Las cabeceras oficialmente solo permiten ASCII, así que el texto no inglés y los emojis se envuelven como =?charset?B?…?= (Base64) o =?charset?Q?…?= (una variante de quoted-printable). Por ejemplo, =?UTF-8?Q?caf=C3=A9?= se decodifica como café. El decodificador de arriba muestra el valor legible; el valor en bruto es lo que realmente viaja por la red.

3. Los campos de cabecera explicados

Estas son las variables que verás en la parte superior de casi cualquier mensaje. No todas están siempre presentes.

Direccionamiento e identidad

CabeceraQué significa
FromEl autor mostrado al lector — un nombre visible y una dirección, p. ej. Anna <anna@example.com>. Esto es lo que muestra tu cliente de correo; no es prueba de quién envió realmente el correo (véase SPF/DKIM más abajo).
To, CcDestinatarios principales y en copia. Son cabeceras puramente informativas — la entrega real la determina el sobre SMTP, no ellas.
BccCopia oculta. Normalmente se elimina antes de la entrega, así que rara vez la ves en el correo recibido.
Reply-ToA dónde deben ir las respuestas si eso difiere de From (p. ej. un remitente “no-reply” que dirige las respuestas a soporte).
Return-PathEl remitente del sobre (la dirección “MAIL FROM”) a donde se envían los rebotes. Lo añade el servidor receptor y a menudo difiere de From.
SenderEl agente real que envió el mensaje cuando no es el autor (listas de correo, “en nombre de”).
Message-IDUn identificador único a nivel global para este mensaje, como <a1b2c3@example.com>. Se usa para agrupar en hilos y eliminar duplicados.

Hilos, fechas y asunto

CabeceraQué significa
SubjectLa línea del tema. A menudo es un encoded-word cuando contiene caracteres no ASCII.
DateCuándo envió el autor el mensaje, con un desfase de zona horaria, p. ej. Wed, 9 Jul 2026 10:15:00 +0000.
In-Reply-ToEl Message-ID al que responde este mensaje — permite a los clientes construir hilos de conversación.
ReferencesLa cadena de Message-IDs anteriores del hilo.

Enrutamiento y autenticación

CabeceraQué significa
ReceivedUna línea de rastreo que añade cada servidor de correo por el que pasó el mensaje, la más reciente arriba. Leerlas de abajo hacia arriba muestra la ruta de entrega y las marcas de tiempo.
DKIM-SignatureUna firma criptográfica que permite al receptor confirmar que el mensaje fue enviado realmente por el dominio y no se alteró en tránsito.
Authentication-ResultsEl veredicto del servidor receptor sobre las comprobaciones de SPF, DKIM y DMARC (pass/fail). Una forma rápida de juzgar si un “From” es de fiar.
Received-SPFSi la IP remitente está autorizada a enviar en nombre del dominio del sobre.
List-UnsubscribePara correo masivo/boletines: la dirección o URL que usa un cliente para darse de baja con un solo clic.

4. Las variables MIME — cómo se construye el cuerpo

Estas pocas cabeceras controlan toda la estructura del cuerpo. Son las variables que más le importan a este decodificador.

VariableQué hace
MIME-Version: 1.0Declara que el mensaje usa MIME. En la práctica, siempre 1.0.
Content-TypeLa variable más importante de todas: el tipo de medio de una parte (text/plain, text/html, image/png, application/pdf, multipart/*…). Lleva parámetros tras los puntos y comas.
charsetUn parámetro de un Content-Type de texto: la codificación de caracteres del texto, p. ej. charset="UTF-8". Necesario para volver a convertir los bytes en las letras correctas.
boundaryUn parámetro de un tipo multipart: una cadena marcadora única. Cada parte empieza con --boundary y la última termina con --boundary--.
Content-Transfer-EncodingCómo se empaquetaron los bytes de la parte para que sobrevivan como texto de 7 bits por la red (véase la tabla de abajo).
Content-Dispositioninline (mostrarlo dentro del mensaje) o attachment (ofrecerlo como un archivo). Suele llevar un parámetro filename.
name / filenameEl nombre de archivo sugerido de un adjunto, en Content-Type y Content-Disposition respectivamente.
Content-IDUn identificador para una parte inline (p. ej. una imagen) para que el cuerpo HTML pueda referenciarla con cid:.

Los tipos multipart más comunes

  • multipart/alternative — el mismo mensaje en dos formas: una alternativa text/plain y una versión text/html. El cliente muestra la más rica que pueda.
  • multipart/mixed — un cuerpo más adjuntos agrupados juntos.
  • multipart/related — una parte HTML junto con las imágenes inline que referencia por Content-ID.

Estos se anidan: un mensaje real suele ser un multipart/mixed que contiene un multipart/alternative (texto + HTML) junto a un adjunto PDF. El decodificador muestra esto como un árbol numerado (1, 1.1, 1.2…).

5. Valores de Content-Transfer-Encoding

ValorSignificado
7bitASCII simple, nada cambiado. El valor por defecto cuando no se indica ninguna codificación.
8bitLos bytes por encima de 127 se usan directamente (necesita un canal limpio de 8 bits).
binaryBytes arbitrarios, sin límites de longitud de línea — raro en el correo normal.
quoted-printableTexto en su mayoría legible donde los bytes no ASCII se convierten en =XX hexadecimal (y un = al final de línea es un salto suave). Bueno para texto que es mayormente inglés con algunos acentos.
base64Cualquier byte recodificado en un alfabeto seguro de 64 caracteres, ~33% más grande. Se usa para imágenes, PDF y otros adjuntos binarios.

El decodificador revierte la codificación que se haya usado y luego aplica el charset de la parte, para que el texto vuelva legible y los adjuntos vuelvan como sus bytes originales (que puedes descargar).

6. Un ejemplo resuelto

Pulsa “Cargar un ejemplo” arriba para cargar un mensaje pequeño y verlo decodificado. Su esqueleto tiene este aspecto:

Subject: =?UTF-8?Q?Meeting_notes_=E2=80=93_caf=C3=A9?= ← encoded-word MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="OUTER" --OUTER Content-Type: multipart/alternative; boundary="INNER" --INNER Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable ← parte de texto ... --INNER Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 ← alternativa HTML ... --INNER-- --OUTER Content-Type: text/plain; name="notes.txt" Content-Disposition: attachment; filename="notes.txt" Content-Transfer-Encoding: base64 ← adjunto ... --OUTER--

Cómo leerlo: el tipo exterior es multipart/mixed, así que el cuerpo es “contenido + adjunto”. Su primer hijo es un multipart/alternative que contiene las versiones de texto plano y HTML de la misma nota; su segundo hijo es el adjunto notes.txt. El Subject es un encoded-word que se decodifica como “Meeting notes – café”.

7. Privacidad

Todo se queda en tu dispositivo. Esta herramienta analiza el mensaje con JavaScript en tu navegador — el correo en bruto nunca se nos envía a nosotros ni a nadie más, y no se almacena nada. Puedes inspeccionar con seguridad mensajes privados o sensibles.

Una vez que sabes de qué servidor vino un mensaje, puedes profundizar: consulta la Consulta MX del dominio, lee cómo responde un servidor en la guía Comprobación SMTP con telnet, o comprueba si una dirección es entregable con el Comprobador de correo.