简单的 C++ MIME 解析器 [关闭]

Posted

技术标签:

【中文标题】简单的 C++ MIME 解析器 [关闭]【英文标题】:Simple C++ MIME parser [closed] 【发布时间】:2010-09-18 02:24:22 【问题描述】:

我想消化从 php 脚本发回的 C++ 中的多部分响应。任何人都知道可以为我执行此操作的非常轻量级的 MIME 解析器吗?

【问题讨论】:

【参考方案1】:

我知道这可能太少、太晚了,但我也有类似的需求。我想要一个 MIME 解析器,它只对 MIME 进行编码和解码。为了完整性和谷歌的能力,我认为我应该把我的发现放在这里。请记住,我对发送和接收邮件不感兴趣,只是对 MIME 进行编码和解码。以下是我为 C++ MIME 研究的库:

http://www.vmime.org/ - 看起来太多了。包含pop、SMTP、tls、IMAP,可以去掉这个。 Posix 和 windows。

http://codesink.org/mimetic_mime_library.html - 看起来很有希望。用于读取和创建消息的非常好的 api。和这个一起去了。不太重。必须“修复”两件事。首先对于多部分,代码只是检查字符串“multipart”并且没有识别“multipart/mixed”并且没有写出这些部分。其次,我不得不破解 mimeentity 编写代码。它只是写出 std::deque 字段,由于这些是字符串,它似乎是按字母顺序执行的。这是个问题,因为 MIME 版本必须是第一个写出的字段。所以我解决了这个问题。我还必须添加对 Content-Length 的支持。

http://www.mozilla.org/mailnews/arch/libmime-description.html - 很难找到这个。不得不下载整个包。邮件新闻\mime\src

http://www.example-code.com/vcpp/smime.asp - 没有考虑,因为它没有源代码并且是特定于 Windows 的。

http://httpd.apache.org/docs/2.2/mod/mod_mime.html - 找不到这个 C 实现。

我选择 Mimetic 是为了满足我的需要,尽管我不得不向它添加一些东西。我发现没有一个解析器能很好地处理可选字段(Content-Length 等)。我还需要它来支持多个平台(Windows、Linux 等)。

【讨论】:

scalingweb.com/mime_parser.php 似乎已更改 - 现在指向一个销售称重设备的网站。【参考方案2】:

使用正则表达式从 mime 多部分数据中更快地削减您需要的内容。并且不需要学习新的库。有简单的 php 解析器 https://github.com/breakermind/PhpMimeParser/blob/master/PhpMimeParser_class.php 但使用正则表达式,您可以非常简单地用 C++ 编写它。只有 357 行。

【讨论】:

【参考方案3】:

到目前为止,我一直在使用来自 cpp-netlib 的 mime code 并取得了成功。这是一个关于语法的bit picky,但效果很好。

【讨论】:

【参考方案4】:

在这里不要自吹自擂,但GMime 是一个非常完整的 MIME 解析器,用 C 编写,可以处理 Content-Length 标头。它还可以轻松处理 DOS 和 UNIX 行尾,处理损坏的标头字符集编码,不需要您将整个消息读入 RAM,支持 PGP/MIME 等。它还有一套非常全面的单元测试,我用于防止任何回归。

人们已经在 Windows 上构建它已经有一段时间了(在 cygwin 和/或 mingw32 afaik 下),但在过去一周左右,我一直在花时间通过设置 Visual C++ 项目将 Windows 列为头等优先事项/Solution 文件并确保所有内容都能构建。

我想即使您已经找到了 MIME 解析器,我也会发帖,这样如果上述解决方案不适合他们的需求,其他可能有类似问题的人可能会看到另一个选择。

【讨论】:

以上是关于简单的 C++ MIME 解析器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

c# HTTP Multipart MIME 解析器

为啥我的 C++ 递归下降解析器只适用于几台计算机? [关闭]

MIME 电子邮件多部分解析器 [重复]

C ++业务规则表达式解析器/评估[关闭]

Qt 的最佳 JSON 解析器? [关闭]

哪个是更快的 XML 解析器? [关闭]