2008-10-20 9 views
5

Ich möchte eine mehrteilige Antwort in C++ aus einem PHP-Skript zurückgeben. Wer kennt einen sehr leichten MIME-Parser, der das für mich tun kann?Einfacher C++ - MIME-Parser

Antwort

15

Ich weiß, dass dies zu wenig, zu spät sein könnte, aber ich hatte ein ähnliches Bedürfnis. Ich wollte einen Pantomime-Parser, der nur das Enkodieren und Dekodieren des MIMEs durchführt. Der Vollständigkeit und der Google-Fähigkeit halber dachte ich, ich sollte meine Erkenntnisse hier veröffentlichen. Denken Sie daran, dass ich nicht daran interessiert war, E-Mails zu senden und zu empfangen, sondern MIME zu kodieren und zu dekodieren. Hier sind die Bibliotheken, die ich für C++ MIME recherchiert:

http://www.vmime.org/ - Sieht aus wie zu viel. Enthält pop, SMTP, tls, IMAP, könnte dies entfernen. Posix und Fenster.

http://codesink.org/mimetic_mime_library.html - sieht vielversprechend aus. Sehr schöne API zum Einlesen und Erstellen von Nachrichten. Ging mit diesem. Nicht zu schwer. Musste 2 Dinge "reparieren". Zuerst für Multipart wurde der Code nur nach der Zeichenkette "multipart" suchen und "multipart/mixed" nicht erkennen und die Teile nicht ausschreiben. Zweitens musste ich den Mimeentity-Schreibcode hacken. Es wurde nur das std :: deque Field geschrieben, und da dies Strings sind, scheint es das alphabetisch zu tun. Dies ist ein Problem, da die MIME-Version das erste ausgeschriebene Feld sein muss. Also habe ich das behoben. Ich musste auch Unterstützung für Content-Length hinzufügen.

http://www.mozilla.org/mailnews/arch/libmime-description.html - Hard Zeit diese zu finden. Musste das ganze Paket herunterladen. mailnews \ mime \ src

http://www.example-code.com/vcpp/smime.asp - Nicht berücksichtigt, weil es keinen Quellcode hatte und Windows-spezifisch war.

http://www.scalingweb.com/mime_parser.php - nicht der Ansicht, weil es auf anderen Stream-Bibliothek von Autor abhängt.

http://httpd.apache.org/docs/2.2/mod/mod_mime.html - kann nicht diese C-Implementierung finden.

Ich wählte Mimetic für meine Bedürfnisse, obwohl ich ein paar Dinge hinzufügen musste. Keines der gefundenen Parser hat die optionalen Felder (Content-Length, etc ..) sehr gut verarbeitet. Ich brauchte es auch, um mehrere Plattformen (Windows, Linux, etc ..) zu unterstützen

+1

http://www.scalingweb.com/mime_parser.php scheint sich geändert zu haben - führt nun zu einer Website, die Wägetechnik verkauft. –

4

Nicht mein eigenes Horn hier Toot, aber GMime ist eine sehr vollständige MIME-Parser in C geschrieben, die den Content-Length-Header behandeln kann. Es handhabt auch DOS- und UNIX-Zeilenenden mit Leichtigkeit, behandelt gebrochene Kopfzeilenzeichensatzkodierungen, erfordert nicht, dass Sie die gesamte Nachricht in RAM lesen, unterstützt PGP/MIME, etc. Es hat auch eine sehr umfassende Reihe von Komponententests, die ich Verwenden Sie, um Regressionen zu verhindern.

Die Leute haben es seit einiger Zeit unter Windows (unter cygwin und/oder mingw32 afaik) aufgebaut, aber in der letzten Woche habe ich viel Zeit damit verbracht, Windows durch die Einrichtung von Visual C++ eine erstklassige Priorität zu geben Projekt-/Lösungsdateien und stellen sicher, dass alles aufbaut.

Dargestellt würde ich auch wenn Sie bereits einen MIME-Parser gefunden haben, nur damit andere Leute, die eine ähnliche Frage haben, eine andere Option sehen, wenn die oben genannten Lösungen nicht ihren Bedürfnissen entsprechen.

0

Ich habe bisher die mime code von CPP-netlib mit Erfolg im Einsatz. Es ist ein bit picky über Syntax, aber funktioniert gut.