Cómo decodificar un correo electrónico en formato MIME

La mayoría de los correos electrónicos enviados hoy tienen el formato MIME (Extensiones de correo de Internet multipuesto). Esto permite que los correos electrónicos se envíen con texto sin formato y versiones de texto enriquecido / HTML, imágenes en línea y archivos adjuntos. Las extensiones MIME se pueden agregar a un mensaje en formato estándar RFC / 822 para lograr compatibilidad con versiones anteriores de sistemas de correo más antiguos.

Paso 1

Cargue el contenido del mensaje de correo electrónico.

Video del día

Paso 2

Compruebe el encabezado "Tipo de contenido". Si el tipo de contenido es multiparte (es decir, "multiparte / mixto", "multiparte / alternativo", etc.), el mensaje tendrá varias secciones para analizar. Si el tipo de contenido es de varias partes, continúe con los pasos a continuación.

Paso 3

El encabezado Content-Type debe contener una cadena única utilizada por el código que generó el mensaje MIME para designar los límites de la parte MIME. Ejemplo:

Tipo de contenido: multiparte / mixto; boundary = "part_c7161025_fe8a_45f4_83ef_6befcfa5d021"

La cadena de límite en este caso es "part_c7161025_fe8a_45f4_83ef_6befcfa5d021".

Etapa 4

Cada parte MIME estará separada por la cadena de límite precedida por dos guiones ("-") en una línea en blanco. Deberá escanear el mensaje línea por línea en busca de los límites de la pieza. Todo el texto entre los límites excepto el CR / LF final es parte de esa parte MIME.

Importante: La última parte MIME terminará con la cadena de límite seguida 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

Luego, cada parte MIME debe analizarse. El formato de cada parte MIME es similar al mensaje con formato RFC / 822 original. Contendrá una serie de encabezados, seguidos de una línea en blanco, luego los datos del cuerpo.

Paso 6

Una parte MIME puede ser en sí misma multiparte, con su propio encabezado "Content-Type" y una cadena de límites. Su código debe analizar de forma recursiva las partes MIME hasta que llegue a los nodos secundarios.

Paso 7

Una parte MIME puede ser simplemente un archivo adjunto binario. En este caso, normalmente se proporcionará un encabezado de nombre de archivo, junto con la codificación de transferencia. BASE64 es un tipo de codificación popular. En este caso, todo el cuerpo de la parte MIME debe decodificarse en BASE64. Como ejemplo, aquí están las primeras líneas de una imagen JPG adjunta:

=NextPart_003_01C755EF.43F2628D Tipo de contenido: imagen / jpeg; name = "testimage.jpg" Codificación de transferencia de contenido: base64 Descripción del contenido: testimage.jpg Disposición del contenido: adjunto; filename = "testimage.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC3 AhEBAxEB / 8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL / 8QAtRAAAgEDAwIEAwUFBAQA

Paso 8

El cuerpo HTML del mensaje debe estar en una sección MIME con ContentType: Text / Html, dentro de una sección ContentType: Multipart / Alternative MIME.

Paso 9

El cuerpo de texto sin formato del mensaje debe estar en una sección MIME con ContentType: Text / plain, dentro de una sección ContentType: Multipart / Alternative MIME.

Cosas que necesitará

  • Conocimiento de un lenguaje informático (es decir, C ++, C #, VB, etc.).

  • Conocimientos básicos del formato de un mensaje de correo electrónico con formato RFC / 822.

Propina

Consultar RFC 822 http://www.ietf.org/rfc/rfc0822.txt? número = 822 y RFC 1341 http://www.ietf.org/rfc/rfc1341.txt? número = 1341 para más información. Si está codificando en C #, una excelente biblioteca gratuita está disponible en http://www.codeproject.com/csharp/mime_project.asp.