【问题标题】:Reading EML files from Windows SMTP service. Any reason not to use StreamReader?从 Windows SMTP 服务读取 EML 文件。有什么理由不使用 StreamReader?
【发布时间】:2011-01-21 16:03:56
【问题描述】:

我将读取和解析 Microsoft SMTP 服务丢弃的 EML 文件。我是使用各种流类的新手。我看到的解析这些文件的实现使用 System.IO.Stream 的变体来逐字节读取。但是,这些文件似乎永远不应该是文本。使用 StreamReader 不是更好吗?如果是这样,是否有任何理由使用默认 (UTF-8) 编码以外的其他编码?

【问题讨论】:

    标签: .net smtp stream streamreader eml


    【解决方案1】:

    它们应该是文本,但并非总是如此。

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

    StreamReader 将适用于您要解析的大约 99% 的电子邮件。

    不过,老实说,这还不是最大的问题。

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

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

    执行此操作的最佳方法是实际阅读二进制形式的电子邮件,提取字符集,然后切换到使用在标题中找到的指定字符集阅读电子邮件。

    【讨论】:

    • 感谢您的回答。我在 RFC 2046 秒中看到了“Content-Type”标头的字符集参数。 4.1.2.这是正确的信息吗?
    • 是的。您可以做的一件事是提前扫描该值,找到它,设置编码,然后使用使用该字符集创建的 StreamReader 重新阅读电子邮件。
    • 听起来像是一个计划。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-07-30
    • 2011-01-19
    • 1970-01-01
    • 2023-01-08
    • 2019-02-21
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    相关资源
    最近更新 更多