我要被读取和解析EML文件下降了微软SMTP服务。我是一个新手使用各种流类。它分析这些文件,我已经看到了实现使用上System.IO.Stream的变化按字节读取字节。然而,好像这些文件不应该是什么,但文本。那岂不是更好地使用一个StreamReader?如果是的话,是没有任何理由的其他使用比默认(UTF-8)编码?

有帮助吗?

解决方案

他们应该是文字,但他们并不总是这样。

电子邮件可以是8位或二进制编码。

一个StreamReader将努力为电子邮件的约99%要解析。

但是,坦白地说,这不是最大的问题。

在问题将是实际解析和提取所述MIME内容,根据为Mime规则,使用正确的字符集沿着。

虽然UTF-8是一个非常大的字符集,它可以用来解析大多数电子邮件,您仍然可以通过尝试与该字符集解析电子邮件获取腐败的内容。

要做到这一点,最好的方法,是实际读取的电子邮件以二进制形式,提取字符集,然后切换到使用标头中找到指定字符阅读电子邮件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top