Welche IMAP Bibliothek?
Hallo, neben der imaplib aus der Standard Library gibt es noch viele andere IMAP Module: https://pypi.python.org/pypi?%3Aaction=search&term=imap&submit=search So weit ich weiß ist die imaplib von Python eher "low level". Eine high level, python-mäßige API wäre mit natürlich lieber. Hat hier jemand Erfahrung oder Hinweise? Gruß, Thomas -- http://www.thomas-guettler.de/
Am 26.02.2015 um 07:17 schrieb Thomas Güttler:
So weit ich weiß ist die imaplib von Python eher "low level".
Das ist wahr.
Eine high level, python-mäßige API wäre mit natürlich lieber.
Das ist ja ein sehr allgemeines Requirement. Was ist dein Einsatzzweck. Geht es vor allem um das Retrieval von Mails oder die Verwaltung der Mails im Imap-Account oder um die Verarbeitung der E-Mails? Für ersteres gibt es IMAPClient: https://bitbucket.org/mjs0/imapclient Für das Parsen von E-Mails gibt es imbox: https://github.com/martinrusev/imbox
Hat hier jemand Erfahrung oder Hinweise?
Ich habe beide Bibliotheken testweise ausprobiert und von ihnen eigene Forks erstellt und teilweise umfangreiche Änderungen daran vorgenommen, besonders an imbox. Zu IMAPClient habe ich vor allem eine moderne Unterstützung von STARTTLS basierend auf pyOpenSSL hinzugefügt, die mit allen wesentlichen Python-Versionen funktioniert. https://bitbucket.org/SpotlightKid/imapclient https://github.com/SpotlightKid/imbox Generell ist aber dringend zu empfehlen, bei der Verarbeitung von E-Mails auf Python 3, und dabei insbesondere Version 3.4 zu setzen. Das email-Package in der Standardlib von Python ist in älteren Versionen nicht wirklich Unicode-sauber. Chris
Am 26.02.2015 um 11:43 schrieb Christopher Arndt:
Am 26.02.2015 um 07:17 schrieb Thomas Güttler:
So weit ich weiß ist die imaplib von Python eher "low level".
Das ist wahr.
Eine high level, python-mäßige API wäre mit natürlich lieber.
Das ist ja ein sehr allgemeines Requirement. Was ist dein Einsatzzweck. Geht es vor allem um das Retrieval von Mails oder die Verwaltung der Mails im Imap-Account oder um die Verarbeitung der E-Mails?
Mir geht es hier nur im die IMAP-Schnittstelle. Also Parsen von Mails usw. ist wieder eine ganz andere Geschichte. Die Trennung ist mir bewusst. Eine Lib die beides anbietet wäre mir auch eher suspekt.
Für ersteres gibt es IMAPClient: https://bitbucket.org/mjs0/imapclient
Für das Parsen von E-Mails gibt es imbox: https://github.com/martinrusev/imbox
Hat hier jemand Erfahrung oder Hinweise?
Ich habe beide Bibliotheken testweise ausprobiert und von ihnen eigene Forks erstellt und teilweise umfangreiche Änderungen daran vorgenommen, besonders an imbox. Zu IMAPClient habe ich vor allem eine moderne Unterstützung von STARTTLS basierend auf pyOpenSSL hinzugefügt, die mit allen wesentlichen Python-Versionen funktioniert.
OK, das spricht dafür, dass IMAPClient() nicht so besonders ausgereift ist, oder? Gibt es nicht eine Lib die damit schon richtig umgehen kann? Prinzipiell wäre ich ja auch bereit Geld zu bezahlen. Zeit für das Forken und Anpassen habe ich nicht. Kleine Verbesserungen mache ich gerne und erstelle auch gerne einen Pull-Request. Das ist keine Frage.
https://bitbucket.org/SpotlightKid/imapclient https://github.com/SpotlightKid/imbox
Generell ist aber dringend zu empfehlen, bei der Verarbeitung von E-Mails auf Python 3, und dabei insbesondere Version 3.4 zu setzen. Das email-Package in der Standardlib von Python ist in älteren Versionen nicht wirklich Unicode-sauber.
Wie gesagt, ich nutze nur IMAP. Ich parse die Mails nicht. Also sollte ich mit Unicode kaum in Berührung kommen. OK, vielleicht bei Ordnernamen. ... Mal sehen. Tut mir Leid, wenn meine Antwort etwas "barsch" klingt. Deine Antwort war durchaus hilfreich. Gruß, Thomas
Am 26.02.2015 um 17:35 schrieb Thomas Güttler:
Zu IMAPClient habe ich vor allem eine moderne Unterstützung von STARTTLS basierend auf pyOpenSSL hinzugefügt, die mit allen wesentlichen Python-Versionen funktioniert.
OK, das spricht dafür, dass IMAPClient() nicht so besonders ausgereift ist, oder? Gibt es nicht eine Lib die damit schon richtig umgehen kann?
Das ist nicht unbedingt nur die Schuld von IMAPClient. Die SSL-Unterstützung in Python 2 und <3.4 ist, mit Verlaub, unter aller Sau. Siehe dazu z.B. den Vortrag von Hynek Schlawak "The sorry state of SSL" (https://www.youtube.com/watch?v=PJ5vUz9FJcw). Seither sind schon wieder einige Sicherheitslücken akut geworden, die weitere Legacy-Parts von SSL obsolet gemacht haben. Mit Python 2.7.9 ist es in Python 2 etwas besser geworden, aber man muss m.E. zu große Haken schlagen, um eine einheitliche SSL-Unterstützung unter den verschiedenen Pythonversionen zu gewährleisten, deswegen sollte man gleich auf eine 3rd-Party Library wie pyOpenSSL zurückgreifen. Ansonsten finde ich die API von IMAPClient schon sehr viel angenehmer als imaplib und die Bibliothek wird auch aktiv weiterentwickelt. Leider werden heutzutage ja insgesamt alle Protokolle außer HTTP etwas stiefmütterlich behandelt. Die meisten mobilen Mailclients sprechen mittlerweile mit jeweiligen Diensten direkt über eine mehr oder weniger offene HTTP-API. Chris
Am 26.02.2015 um 17:49 schrieb Christopher Arndt:
Am 26.02.2015 um 17:35 schrieb Thomas Güttler:
Zu IMAPClient habe ich vor allem eine moderne Unterstützung von STARTTLS basierend auf pyOpenSSL hinzugefügt, die mit allen wesentlichen Python-Versionen funktioniert.
OK, das spricht dafür, dass IMAPClient() nicht so besonders ausgereift ist, oder? Gibt es nicht eine Lib die damit schon richtig umgehen kann?
Das ist nicht unbedingt nur die Schuld von IMAPClient. Die SSL-Unterstützung in Python 2 und <3.4 ist, mit Verlaub, unter aller Sau....
OK. Danke für die Klarstellung. ...
Leider werden heutzutage ja insgesamt alle Protokolle außer HTTP etwas stiefmütterlich behandelt. Die meisten mobilen Mailclients sprechen mittlerweile mit jeweiligen Diensten direkt über eine mehr oder weniger offene HTTP-API.
Ja das stimmt. Eine Http-REST API an sich ist eben kein Standard. Das ist nur ein standardisiertes Übertragungsprotokoll. In der Regel bietet Server die ähnliche Funktionalität bereitstellen eine andere Http-REST API an. Bsp: APIs für ebay, amazon, .... oder gibt es hier einen Standard? Das sind die Standards aus den "alten Zeiten" (FTP, Pop3, IMAP, NTP) etwas besser, da es hier mehrere Serverimplementierungen gibt. OK, entsprechend gibt es auch mehrere Clientimplementierungen und entsprechend stehe ich nun vor der Qual der Wahl: Welche Lib nehmen :-) Ich warte noch bis zum Wochenende. Wenn keiner hier einen weiteren Vorschlag hat, werde ich mal IMAPClient ausprobieren. Danke für dein Feedback! Gruß, Thomas -- http://www.thomas-guettler.de/
participants (2)
-
Christopher Arndt
-
Thomas Güttler