从C/C++解析简单的MIME文件?

前端之家收集整理的这篇文章主要介绍了从C/C++解析简单的MIME文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经在网上搜索了几天,但我似乎无法找到解决问题的好方法

对于我的一个项目,我正在寻找一个好的(轻量级)MIME解析器.我的客户提供MIME格式的文件(线性,无层次结构),其中包含3-4个“部分”.应用程序必须能够拆分这些部件并独立处理它们.

基本上这些MIME文件就像原始电子邮件消息,但没有SMTP标头.相反,它们以MIME-Header“MIME-Version:1.0”开头,之后部分如下.

我正在使用C作为应用程序,因此欢迎使用C库.我们也欢迎标准的C库;但它应符合以下标准:

>开放(至少是LGPL),而不是properiaty
>紧凑 – 我只需要解析器,没有SMTP / POP3支持
>跨平台(针对Windows,Mac OS X和Linux)

经过几天的搜索,我发现了以下库和不使用它们的原因:

> @L_404_2@(C)—虽然这个库看起来很完整并且用于C语言,但它基于glib,它不能在Windows上正确编译.
> Vmime(C)—似乎已完成,但没有正式的Windows支持.他们还提供“双重许可”(“商业LGPL”GPL).似乎包含在Ubuntu和Debian中,但许可证令人困惑.
> mime++ —商业,没有Mac支持.
> Chilkat Software MIME C++ Library —商业和专注于Windows.

我真的不想编写自己的MIME解析器. MIME非常普遍,必须有一些开放的库才能以理智的方式处理这种文件格式.

那么,你们有任何想法,建议或链接吗?

提前致谢!

解决方法

GMime是一个用C语言编写的LGPL mime解析器.它确实依赖于glib,但glib可以在Windows上使用: 32bit64bit(以及所有基于Unix的平台,包括Mac OS X).它也构建在Visual Studio内部,因此我无法看到问题所在.我知道至少有一家商业Windows供应商在他们的产品(Kerio Connect,iirc)中发布了libgmime.dll和libglib.dll.诺基亚甚至将它放在他们的一些手机上.

如果你实际上期望它除了在’:’上分割标题之外做任何事情并且对Content-Type标题进行偶然解析以寻找边界字符串然后去,那么实际上没有“轻量级”mime解析器这样的东西.处理非嵌套的多部分(在解析http响应和预控制mime消息之外无用,你可以控制它的组成).

代码行而言,像GMime这样的解析器是如此“大”的原因是因为它们适用于实际需要正确且强大的mime-part和头部解析/解码的开发人员.请参阅我关于decoding rfc2047 encoded-word tokens的咆哮,了解它有多复杂(btw,除了GMime和MimeKit之外,我还没有找到任何能够处理我的rant中讨论的所有边缘情况的开源mime解析器).

即使具有所有这些额外的强大处理,它仍然比大多数“轻量级”mime解析器可能更快或更快,特别是考虑到大多数使用readline方法.我见过“轻量级”mime解析器声称在2-3秒内解析25MB的电子邮件文件,并认为这是“快”.我的单元测试GMime解析2 mBox文件,其中包含大于1.2GB(是的,千兆字节)的消息,时间比此短.

我的观点是,“轻量级”是不知道他们在谈论什么的人的废话标准.

如何根据rfc合规性等有意义的事情来判断?或者通过rfc合规性和性能的组合?无论哪种方式,GMime都会在你做出的任何有意义的比较中成为赢家.

原文链接:https://www.f2er.com/c/114121.html

猜你在找的C&C++相关文章