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

问题描述 投票:0回答:4

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

c++ mime parsing
4个回答
17
投票

我知道这可能太少、太晚,但我也有类似的需求。我想要一个只对 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 版本必须是第一个写出的字段。所以我解决了这个问题。我还必须添加对内容长度的支持。

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,尽管我必须向其中添加一些东西。我发现没有一个解析器能够很好地处理可选字段(内容长度等)。我还需要它支持多个平台(Windows、Linux 等)


8
投票

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

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

即使您已经找到了 MIME 解析器,我还是会发帖,以便其他可能有类似问题的人在上述解决方案不适合他们的需求时可能会看到另一个选择。


1
投票

到目前为止,我一直在成功使用 cpp-netlib 中的 mime 代码。它对语法有点挑剔,但效果很好。


0
投票
https://github.com/breakermind/PhpMimeParser/blob/master/PhpMimeParser_class.php

但使用正则表达式你可以非常简单地用 C++ 编写它。只有 357 行。

© www.soinside.com 2019 - 2024. All rights reserved.