1

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

我正在编写一个在我的 Windows Mobile(掌上电脑)上运行的应用程序。仅供参考,我正在使用 VB.NET。

我的想法是在我的提供商处使用我的电子邮件帐户,该提供商给了我很多 GB:s 供我使用,作为虚拟在线存储磁盘。简而言之,或多或少类似于您可能已经阅读过的 GMAIL 驱动器。我已经编写了代码来使用 telnet-socket 连接到我的提供商的 SMTP、POP3 和 IMAP 帐户。我可以登录,因此到目前为止一切顺利。

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

因此,至少关于我通过 POP3 或 IMAP 接收的代码,我在想,一旦我下载了设备上的所有字节,我只需解析完整的电子邮件(验证边界在哪里)并获取部分(s) 已在 Base64 中编码,然后使用我在发送时在电子邮件的主题字段中写入的文件的名称和扩展名对其进行解码并重命名。通过这种方式,我也许可以避免所有关于 MIME 及其所有含义的东西......

怎么样,通过 SMTP 发送,我仍然需要调查它。任何想法,将不胜感激。

对不起这个浪漫 - 你怎么看 - 我可以跳过获取 MIME 解析器而只使用普通的字符串解析吗?

亲切的问候,莫斯特67

4

3 回答 3

1

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

于 2008-12-11T17:04:21.367 回答
1

您可以尝试在邮件标题中查找边界,然后在此字符串上拆分电子邮件。恕我直言,解析子部分是必要的(想到编码和字符集;在大多数情况下,仅删除标头是行不通的),但比一次处理整个消息要容易一些。

提醒一句:这是一种脆弱的方法——它适用于某些消息,但会破坏其他消息(例如嵌套的多部分消息、更改边界字符串(不应该,但可能发生)等)。

于 2008-12-11T17:12:19.400 回答
1

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

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

几天的工作应该是现实的。我参与了一个简单的内部 MIME 解析器的开发(花了几天时间破解并解析了 95% 的收到的电子邮件),它涉及到一个商业产品(几个月的工作、大量的单元测试和数百封非常奇怪的测试电子邮件从野外),然后进行了修改,以便可以在 Compact Framework 中使用(由于内存受限的设备而发生的变化,由于只有一小部分 .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 恐龙 ;-)。但是,它不是免费的。

于 2009-12-01T20:10:22.800 回答