Abrir un archivo EML
Un archivo .eml es un correo completo aplanado en un solo bloque de texto plano: cabeceras, límites MIME, cuerpos codificados y adjuntos, todo mezclado a propósito. Este endpoint interpreta ese bloque y lo convierte en campos limpios y estructurados, para que un correo exportado o reenviado se vuelva un dato usable en lugar de un muro de texto que nadie quiere procesar con expresiones regulares.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Por qué un correo crudo es más difícil de leer de lo que parece
El formato .eml existe desde los inicios del correo en internet, construido sobre las mismas convenciones de cabeceras RFC 822 que la web sigue usando, y fue diseñado para que los agentes de transferencia de correo se lo pasaran entre sí, no para que el código de una aplicación lo leyera cómodamente. Un solo correo exportado puede contener partes MIME anidadas, codificación quoted-printable o base64, varios juegos de caracteres, imágenes incrustadas referenciadas por content-ID y adjuntos enterrados varias capas dentro de un árbol multipart. Escribir un analizador que maneje todo eso correctamente, para cualquier cliente de correo que haya generado el archivo, es un proyecto en sí mismo, y es exactamente el trabajo que este endpoint ya hizo.
Qué devuelve el endpoint
Envía el archivo crudo a POST /ocr/eml, recibe un task_id de inmediato, y el análisis corre de forma asíncrona detrás. El resultado separa el mensaje en sus campos de cabecera como remitente, destinatarios, asunto y fecha, un cuerpo legible tanto en texto plano como en HTML cuando está disponible, y una lista de adjuntos con nombres de archivo, tipos MIME y tamaños para que decida cuáles descargar y procesar más adelante. La entrega funciona como prefiera: un webhook firmado disparado apenas termina el análisis, o un enlace firmado que recupera dentro de las 24 horas siguientes.
De dónde salen realmente los archivos .eml
Casi nadie genera un archivo .eml a propósito; aparece como formato de exportación cuando alguien arrastra un correo fuera de su cliente de correo, cuando se reenvía un mensaje como adjunto para una revisión de cumplimiento, o cuando una herramienta legal de e-discovery vuelca un buzón completo a disco. Eso hace que este endpoint sea menos una herramienta general de correo y más una capa de traducción para el momento exacto en que un correo sale de su bandeja de entrada y necesita convertirse en un registro: un ticket de soporte, un expediente, una entrada de auditoría.
Cómo encaja en un flujo más grande
Los equipos suelen encadenar esto después de un paso de recepción que acepta cargas de archivos .eml y antes de un paso de clasificación o extracción que trata el cuerpo y los adjuntos ya interpretados como documentos normales. Una mesa de soporte puede analizar un correo de escalamiento, extraer sus adjuntos y enviar cada uno de vuelta a clasificación de documentos, para que una captura de pantalla y un contrato se manejen de forma distinta. Como cada llamada no guarda estado y se cobra de manera independiente, funciona igual si está analizando una sola queja reenviada o replicando la exportación completa de un buzón.
Qué cuesta
El precio es plano y simple: $0.002 por solicitud, sin recargo por página ni por adjunto, porque interpretar la estructura, en lugar de hacer OCR, es realmente un trabajo liviano. Un análisis fallido nunca se cobra: reintentamos automáticamente hasta tres veces antes de devolver un error específico que describe qué estaba mal formado. No hay plan gratuito ni prueba; el acceso necesita saldo prepago, y las llamadas sin saldo devuelven HTTP 402 en lugar de quedar en cola o limitarse en silencio.
Qué puede hacer con ella
Ingesta de tickets de soporte desde correos reenviados
Una mesa de ayuda analiza correos que el personal reenvía a un sistema de tickets, extrayendo el remitente original y los adjuntos del .eml reenviado.
Revisión legal de e-discovery
Un equipo de soporte litigioso analiza una carpeta de archivos .eml exportados para extraer cabeceras y adjuntos a escala durante una revisión de privilegio.
Archivo de cumplimiento normativo
Una firma financiera analiza correos marcados para convertirlos en registros estructurados y poder indexar cabeceras y listas de adjuntos en auditorías de retención.
Captura automática de facturas desde el correo
Un sistema de cuentas por pagar analiza correos de proveedores para aislar los adjuntos PDF de factura antes de enviarlos a un paso de extracción a JSON.
Preguntas frecuentes
¿Qué extrae exactamente la api para leer archivo eml?
Separa un archivo .eml crudo en cabeceras como remitente, destinatarios, asunto y fecha, el cuerpo del mensaje en texto plano y HTML, y una lista de adjuntos con nombres, tipos y tamaños.
¿Decodifica adjuntos en base64 y quoted-printable?
Sí, decodificar codificaciones MIME y estructuras multipart es justamente lo que resuelve el analizador, porque eso es lo que hace difícil de leer un archivo .eml crudo.
¿También puede descargar y procesar los adjuntos que encuentra?
El endpoint devuelve los metadatos y el contenido de los adjuntos para que pueda enviar cada uno a un paso separado de extracción o clasificación según lo necesite.
¿Existe una prueba gratuita para leer archivos EML?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿Cuánto cuesta analizar un archivo de correo?
Es un precio plano de $0.002 por solicitud, sin importar el tamaño del correo ni el número de adjuntos, y no se cobra por un análisis fallido.
¿Funciona también con archivos .msg de Outlook?
Este endpoint está construido específicamente para el formato .eml; si su origen es .msg, expórtelo o conviértalo a .eml antes de enviarlo aquí.
¿Qué tan rápido recibo el resultado del análisis?
Recibe un task_id de inmediato, y el resultado llega por webhook firmado cuando está listo o mediante un enlace firmado válido por 24 horas.
¿Puedo analizar un lote grande de correos exportados a la vez?
Sí, cada solicitud es independiente y se cobra por correo, así que un solo mensaje reenviado o una exportación de miles de archivos funcionan de la misma manera.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/ocr/eml \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/ocr/eml", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ocr/eml",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ocr/eml", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ocr/eml", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"input": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ocr.eml",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 25 |
max_pages | 10 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |