Lettura file EML dal servizio SMTP di Windows. Qual è il motivo di non utilizzare StreamReader?

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

Domanda

ho intenzione di essere la lettura e l'analisi dei file EML sceso dal servizio Microsoft SMTP. Sono un novizio di utilizzare le varie classi stream. L'implementazione ho visto che analizza questi file utilizza una variazione sul System.IO.Stream a leggere byte per byte. Tuttavia, sembra che questi file non dovrebbe mai essere altro che testo. Non sarebbe meglio utilizzare uno StreamReader? E se sì, v'è alcuna ragione per usare qualcosa di diverso da quello predefinito (UTF-8) codifica?

È stato utile?

Soluzione

Dovrebbero essere di testo, ma non sono sempre.

Le email possono essere 8 bit o binario codificati.

Uno StreamReader lavorerà per circa il 99% dei messaggi di posta elettronica che si desidera analizzare.

Tuttavia, in tutta onestà, non è questo il problema più grande.

Il problema sarà effettivamente analisi e l'estrazione del contenuto MIME, secondo regole mimo, insieme utilizzando il set di caratteri corretto.

Anche se UTF-8 è molto grande di caratteri, e può essere utilizzato per analizzare la maggioranza dei messaggi di posta elettronica, è ancora possibile ottenere il contenuto corrotto tentando di analizzare le email con quel set di caratteri.

Il modo migliore per fare questo, è quello di leggere in realtà l'e-mail in forma binaria, estrarre il set di caratteri, quindi passare alla lettura della posta elettronica utilizzando il set di caratteri specificato nelle intestazioni trovato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top