Search code examples
c++parsingmime

Parsing simple MIME files from C/C++?


I have searched the web for days now but I can't seem to find a good solution to my problem:

For one of my projects I'm looking for a good (lightweight) MIME parser. My customer provides MIME formatted files (linear, no hierarchy) which contain 3-4 "parts". The application must be able to split those parts and process them independently.

Basically those MIME files are like raw E-Mail messages, but without the SMTP-headers. Instead they begin with the MIME-Header "MIME-Version: 1.0" and after that the parts follow.

I am using C++ for the application, so a C++ library is welcome. A standard C library is welcome, too; but it should fit the following criteria:

  • Be open (at least LGPL), not properiaty
  • Compact - I just need the parser, no SMTP/POP3 support
  • Cross-Platform (targeting Windows, Mac OS X and Linux)

After days of searching I found the following libs and reasons why to not use them:

  • mimetic (C++) --- Although this library seems complete and for C++ usage, it is based on glib, which won't properly compile on Windows.
  • Vmime (C++) --- Seems complete, but there is no official Windows support. Also they provide "dual licensing" ("commerical LGPL" + GPL). Seems to be included with Ubuntu and Debian, but the licensing is confusing.
  • mime++ --- Commerical, no Mac support.
  • Chilkat Software MIME C++ Library --- Commerical and focused on Windows.

I don't really want to write my own MIME parser. MIME is so widespread that there must be some open library to handle this file format in a sane way.

So, do you guys have any ideas, suggestions or links?

Thanks in advance!


Solution

  • It's been a while. So I'll just answer my own question.

    After spending some more time on this, I ended up writing my own implementation. MIME is quite simple indeed, and if you read the documentation, you have something up and running in a short time.

    However, I think there should be something like vMime, but open source. I can't believe that so few people have to deal with MIME structures as it's a real standard.