Lettura file EML dal servizio SMTP di Windows. Qual è il motivo di non utilizzare StreamReader?
-
23-09-2019 - |
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?
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.