简单的 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 解析器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章