Cómo decodificar un correo electrónico en formato MIME
La mayoría de emails actuales usan formato MIME (Extensiones de Correo Internet Multipropósito). Permite enviar texto plano y enriquecido/HTML, imágenes incrustadas y adjuntos. Las extensiones MIME pueden añadirse a mensaje en formato RFC/822 estándar para compatibilidad con sistemas de correo antiguos.
Paso 1
Cargue el contenido del mensaje de email.
Paso 2
Verifique cabecera «Content-Type». Si es multipart (ej. «multipart/mixed», «multipart/alternative»), el mensaje tendrá varias secciones para analizar. Si es multipart, continúe.
Paso 3
La cabecera «Content-Type» debe contener cadena única usada por el generador MIME para delimitar partes. Ejemplo:
Content-Type: multipart/mixed; boundary="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"
La cadena boundary es «part_c7161025_fe8a_45f4_83ef_6befcfa5d021».
Paso 4
Cada parte MIME se separa por la cadena boundary precedida de dos guiones («--») en línea en blanco. Escanee línea a línea buscando límites. Todo texto entre límites excepto el CR/LF final pertenece a esa parte.
Importante: La última parte termina con boundary seguido de dos guiones más.
Ejemplo:
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Primera parte MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Segunda parte MIME
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Última parte MIME.
--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--
Paso 5
Cada parte MIME debe analizarse. Su formato es similar al mensaje RFC/822 original: serie de cabeceras, línea en blanco, datos del cuerpo.
Paso 6
Una parte MIME puede ser a su vez multipart, con su propia cabecera «Content-Type» y boundary. Su código debe analizar recursivamente hasta nodos hoja.
Paso 7
Una parte puede ser adjunto binario. Entonces suele haber cabecera «Filename» y codificación de transferencia. BASE64 es popular. En ese caso, todo el cuerpo debe decodificarse BASE64. Ejemplo primeras líneas de JPG adjunto:
------=NextPart_003_01C755EF.43F2628D
Content-Type: image/jpeg; name="testimage.jpg"
Content-Transfer-Encoding: base64
Content-Description: testimage.jpg
Content-Disposition: attachment; filename="testimage.jpg"
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAQABQQDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
Paso 8
El cuerpo HTML debe estar en sección MIME con Content-Type: Text/Html, dentro de Content-Type: Multipart/Alternative.
Paso 9
El cuerpo en texto plano debe estar en sección MIME con Content-Type: Text/plain, dentro de Content-Type: Multipart/Alternative.
Consejo
Consulte RFC 822 y RFC 1341 para más info. Si programa en C#, excelente librería gratis en codeproject.com/csharp/mime_project.asp.
- ·Cómo dar formato a Straight Talk para enviar por email
- ·Cómo abrir un mensaje de correo electrónico: vista completa, panel de vista previa y modo conversación
- ·Cómo enviar un mensaje de correo electrónico: dirección, adjuntos, asunto, cuerpo y apps
- ·Cómo consultar mi correo electrónico de Charter
- ·Cómo adjuntar un archivo a un correo electrónico
- ·Cómo usar el correo electrónico (guía básica)
- ·Cómo crear una cuenta de correo electrónico: opciones gratuitas y de pago
- ·Cómo eliminar el historial de correo electrónico
- Cómo abrir un archivo adjunto de correo electrónico (vista previa, descarga, seguridad)
- Cómo responder a un mensaje de correo electrónico (Responder, Responder a todos, Respuesta automática, Vista conversación)
- Cómo agregar una firma a un correo electrónico
- Cómo bloquear correo electrónico en Yahoo
- Cómo eliminar una cuenta de correo electrónico
- Cómo rastrear un correo electrónico anónimo
