从C/C++解析简单的MIME文件?
我已经在网上搜索了几天,但我似乎无法找到解决问题的好方法:
对于我的一个项目,我正在寻找一个好的(轻量级)MIME解析器.我的客户提供MIME格式的文件(线性,无层次结构),其中包含3-4个“部分”.应用程序必须能够拆分这些部件并独立处理它们. 基本上这些MIME文件就像原始电子邮件消息,但没有SMTP标头.相反,它们以MIME-Header“MIME-Version:1.0”开头,之后部分如下. 我正在使用C作为应用程序,因此欢迎使用C库.我们也欢迎标准的C库;但它应符合以下标准: >开放(至少是LGPL),而不是properiaty 经过几天的搜索,我发现了以下库和不使用它们的原因: > mimetic(C)—虽然这个库看起来很完整并且用于C语言,但它基于glib,它不能在Windows上正确编译. 我真的不想编写自己的MIME解析器. MIME非常普遍,必须有一些开放的库才能以理智的方式处理这种文件格式. 那么,你们有任何想法,建议或链接吗? 提前致谢! 解决方法
GMime是一个用C语言编写的LGPL mime解析器.它确实依赖于glib,但glib可以在Windows上使用:
32bit和
64bit(以及所有基于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都会在你做出的任何有意义的比较中成为赢家. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- FLEX 与 .net wcf /web services通信
- c# – 在没有VS 2008的情况下将现有.cs文件添加到VS 2008,将
- 正则表达式和sed的使用
- c# – Starfield屏幕保护程序
- Flex:Flex中使用FXG + Adobe Illustrator 制作矢量图介绍
- Sprite 3D用法和相关特性详解(包括如何从零到一个完整工程
- 如何将数据从swift发送到javascript并在我的Web视图中显示?
- swift – 如果一个类实现了一个声明一个的协议,为什么一个类
- c – 什么时候在`std :: sqrt(x * x y * y)’上使用`std ::
- Ruby – 什么是ppp.rb?