简单的C ++ MIME解析器

时间:2008-10-20 11:23:19

标签: c++ mime parsing

我想要消化从PHP脚本发回的C ++中的多部分响应。有人知道一个非常轻量级的MIME解析器可以为我做这个吗?

4 个答案:

答案 0 :(得分:15)

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

http://www.vmime.org/ - 看起来太多了。包含pop,SMTP,tls,IMAP,可以删除它。 Posix和windows。

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

http://www.mozilla.org/mailnews/arch/libmime-description.html - 很难找到这个。不得不下载整个包。 mailnews \ MIME \ SRC

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

http://www.scalingweb.com/mime_parser.php - 没有考虑因为它取决于作者的其他流库。

http://httpd.apache.org/docs/2.2/mod/mod_mime.html - 无法找到此C实现。

我选择Mimetic来满足我的需求,虽然我不得不添加一些东西。我找到的解析器都没有处理可选字段(Content-Length等)。我还需要它来支持多个平台(Windows,Linux等)。

答案 1 :(得分:5)

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

人们已经在Windows上构建它已经有一段时间了(在cygwin和/或mingw32 afaik下),但过去一周左右我一直花时间通过设置Visual C ++项目使Windows成为一流的优先级/解决方案文件并确保所有内容都构建。

如果您已经找到了一个MIME解析器,那么即使你已经找到了一个MIME解析器,如果上述解决方案不能满足他们的需求,那么其他可能有类似问题的人可能会看到另一个选项。

答案 2 :(得分:0)

到目前为止,我一直在使用来自cpp-netlib的mime code。这是bit picky语法,但效果很好。

答案 3 :(得分:0)

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