Lectura EML archivos desde el servicio SMTP de Windows. Cualquier razón para no utilizar StreamReader?

StackOverflow https://stackoverflow.com/questions/2345378

Pregunta

Voy a ser la lectura y análisis de los archivos EML cayeron por el servicio SMTP de Microsoft. Soy un novato en el uso de las diversas clases de flujo. La aplicación que he visto que analiza estos archivos utiliza una variación de System.IO.Stream leer byte a byte. Sin embargo, parece que estos archivos no debe ser otra cosa que el texto. ¿No sería mejor usar un StreamReader? Y si es así, ¿hay alguna razón para usar algo distinto al predeterminado (UTF-8) que codifica?

¿Fue útil?

Solución

Deben ser texto, pero no son siempre.

Los correos electrónicos pueden ser de 8 Bit o binario codificado.

A StreamReader trabajará alrededor del 99% de los correos electrónicos que desea analizar.

Sin embargo, honestamente, que no es el mayor problema.

El problema será realmente analizar y extraer el contenido de Mime, de acuerdo con reglas Mime, junto con el uso del juego de caracteres correcto.

A pesar de UTF-8 es un gran juego de caracteres, y puede ser utilizado para analizar la mayoría de los mensajes de correo electrónico, usted todavía puede obtener contenido dañado al tratar de correos electrónicos de análisis sintáctico con ese juego de caracteres.

La mejor manera de hacer esto, es leer realmente el correo electrónico en un formato binario, extraer el juego de caracteres, y luego cambiar a leer el correo electrónico utilizando el juego de caracteres especificado que se encuentra en las cabeceras.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top