代码之家  ›  专栏  ›  技术社区  ›  moster67

我可以跳过mime解析来获取附件吗?

  •  1
  • moster67  · 技术社区  · 16 年前

    我是新来的,所以首先向你问好

    我正在编写一个在我的Windows Mobile(Pocket PC)上运行的应用程序。仅供参考,我正在使用vb.net。

    我的想法是使用我的电子邮件帐户与我的提供商,谁给了我很多GB:S使用,作为虚拟在线存储磁盘。用几句话来说,或多或少就像你读过的Gmail驱动器。我已经编写了使用telnet套接字连接到提供商的SMTP、POP3和IMAP帐户的代码。我可以登录,到目前为止还不错。

    在我的具体案例中,我对电子邮件本身不感兴趣,但实际上,附件将是我在虚拟存储卡上的文件。我发现了很多免费类,主要是C,用于下载带有附件的电子邮件,最重要的是MIME解析。不幸的是,所有这些类都以某种方式使用网络框架的类/命名空间,这些类/命名空间不包含在Windows Mobile使用的网络紧凑框架中。我自己编写一个mime解析器对我和我的知识来说太复杂了。

    因此,至少在我通过pop3或imap接收的代码方面,我在想,一旦我下载了设备上的所有字节,我将简单地解析完整的电子邮件(验证边界在哪里),并获取已在base64中编码的部分,然后对其进行解码,并使用文件名和扩展名对其进行重命名。我在发送邮件时在邮件的主题字段中写到。这样,我也许可以避免所有关于mime的东西和它的意义…

    怎么办,通过SMTP发送,我还得看一下。任何想法都会受到赞赏。

    对于这段浪漫的经历,你觉得怎么样?我可以跳过使用mime解析器,只使用普通的字符串解析吗?

    亲切的问候, 莫斯特67

    3 回复  |  直到 15 年前
        1
  •  1
  •   Robert C. Barth    16 年前

    mime解析器只是字符串解析器。它们非常容易编写,特别是如果您知道您只需要/需要一个子集的mime类型。查找RFC并自己实现。

        2
  •  1
  •   Piskvor left the building Rohit Kumar    16 年前

    你可以试着找 boundaries 在邮件头中,然后在此字符串上拆分电子邮件。解析子部分是非常必要的(编码和字符集是需要考虑的;在大多数情况下,只删除头是行不通的),但比一次处理整个消息要简单一些。

    注意:这是一个脆弱的方法-它可以处理一些消息,但可以破坏其他消息(例如嵌套的多部分消息、更改边界字符串(不应该,但可能发生)等)。

        3
  •  1
  •   Martin Vobr    15 年前

    编写邮件消息的字符串解析器实际上就是编写一个简单的mime解析器。您可以在几个小时内编写一个快速而脏的mime解析器。如果您将使用它来解析类似的邮件(例如,由同一个客户机软件从一个位置发送的邮件),那么您所需要的就是它。

    有关mime的详细信息,请参阅

    几天的工作应该是现实的。我参与了一个简单的内部mime解析器的开发(花了几天的时间对收到的95%的电子邮件进行了黑客攻击和解析),它开发成了一个商业产品(几个月的工作,大量的UnitTest,以及大量来自野外的Vierd测试邮件),然后对其进行了修改,以便可以在紧凑的框架中使用(由于内存结构的变化)。由于.NET框架的一小部分被移植到.NET CF,因此会发生变化。此外,还增加了CryptoAPI功能中相当大的部分的重写功能,以便使签名和加密的S/MIME电子邮件在.NET CF上工作。

    mime解析器是rebex secure mail for.NET/.NET CF组件的一部分,可以从下载 http://www.rebex.net/secure-mail.net/

    支持.NET和.NET CF的所有版本。即使是.net cf1恐龙;-)。但是,这不是免费的。