Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 正在从Windows SMTP服务读取EML文件。有没有理由不使用StreamReader?_.net_Smtp_Stream_Streamreader_Eml - Fatal编程技术网

.net 正在从Windows SMTP服务读取EML文件。有没有理由不使用StreamReader?

.net 正在从Windows SMTP服务读取EML文件。有没有理由不使用StreamReader?,.net,smtp,stream,streamreader,eml,.net,Smtp,Stream,Streamreader,Eml,我将读取并解析Microsoft SMTP服务丢弃的EML文件。我是一个使用各种流类的新手。我看到的解析这些文件的实现使用System.IO.Stream上的一个变体逐字节读取。然而,看起来这些文件应该是文本。使用StreamReader不是更好吗?如果是这样,除了默认的(UTF-8)编码之外,还有什么理由使用其他编码吗?它们应该是文本,但并不总是文本 电子邮件可以是8位或二进制编码 StreamReader可以处理你想要解析的99%的电子邮件 然而,老实说,这不是最大的问题 问题实际上是根据M

我将读取并解析Microsoft SMTP服务丢弃的EML文件。我是一个使用各种流类的新手。我看到的解析这些文件的实现使用System.IO.Stream上的一个变体逐字节读取。然而,看起来这些文件应该是文本。使用StreamReader不是更好吗?如果是这样,除了默认的(UTF-8)编码之外,还有什么理由使用其他编码吗?

它们应该是文本,但并不总是文本

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

StreamReader可以处理你想要解析的99%的电子邮件

然而,老实说,这不是最大的问题

问题实际上是根据Mime规则解析和提取Mime内容,以及使用正确的字符集

虽然UTF-8是一个非常大的字符集,并且可以用来解析大多数电子邮件,但是您仍然可以通过尝试解析具有该字符集的电子邮件来获取损坏的内容


最好的方法是以二进制形式阅读电子邮件,提取字符集,然后切换到使用标题中指定的字符集阅读电子邮件。

谢谢您的回答。我在RFC 2046中看到了“Content Type”头的charset参数。4.1.2. 这是正确的信息吗?是的。你可以做的一件事是,提前扫描该值,找到它,设置编码,然后用用该字符集创建的StreamReader重新读取电子邮件。听起来像一个计划。再次感谢。