pythIMAP - Eigenen Python IMAP Client

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • pythIMAP - Eigenen Python IMAP Client

    Hier stelle ich euch einen Python IMAP Client vor.

    Es ist keineswegs ein vollwertiger Client. Ihr könnt ihn gerne benutzen um euch ein paar Sachen abzuschauen oder auch darüber zu nörgeln.

    PythIMAP wurde innerhalb einer Woche von 3 StudentInnen erstellt.
    Das Model View Controller Pattern wurde angewendet.
    Trolltechs QT wurde verwendet.

    Bisher schäme ich mich noch nicht für den Code, aber man sollte erwähnen, dass wir zu dem Zeitpunkt erst vier Vorlesungen zu Python hatten. Benutzung also auf eigene Gefahr. Bei manchen Funktionen nutzen wir leider mehr Python Code als nötig. IMAP selbst bringt schon super Schnittstellen (z.B. zum Suchen) mit.

    Features:
    * Ordnerinhalt darstellen
    * Ordnerlliste darstellen
    * Mails lesen ;)
    * Ordner de-/abonnieren
    * Mail löschen/verschieben
    * Statusbar
    * Menüleiste
    * ...

    Screenshots
    [Blockierte Grafik: http://torben.bloggt.biz/files/pythimap01.jpg]
    [Blockierte Grafik: http://torben.bloggt.biz/files/pythimap02.jpg]

    Kompletter Code
    easy-coding.de/trac/pythimap

    Hier eine kleine Einsicht in die Hauptklassen um sich einen Einblick vom Umfang machen zu können.

    Natürlich ist alles selbst geschrieben und OpenSource.

    Model

    Quellcode

    1. from imapmodel import *
    2. from configmodel import *
    3. from qt import *
    4. class AppModel(object):
    5. "Model - Hier finden Zugriffe auf Dateien oder auf Server statt"
    6. def __init__(self):
    7. self.config = ConfigModel()
    8. try:
    9. self.imap = ImapModel(self.config)
    10. except:
    11. self.imap = None
    12. print "Login nicht erfolgreich"
    Alles anzeigen


    View

    Quellcode

    1. from qt import *
    2. from xpmicons import *
    3. from displayview import *
    4. from mailsview import *
    5. from folderview import *
    6. from searchview import *
    7. # ... gekuerzt
    8. class AppView(QApplication):
    9. "View - hier werden die verarbeiteten Daten dargestellt"
    10. def __init__(self, ctrl, *args):
    11. QApplication.__init__(self, *args)
    12. self.args = args
    13. self.ctrl = ctrl
    14. proceed = True
    15. try:
    16. self.ctrl.imap.login()
    17. except:
    18. self.win = OptionsView(self.ctrl, self)
    19. proceed = False
    20. if proceed:
    21. self.win = MainView(ctrl)
    22. self.win.show()
    23. QObject.connect(self, SIGNAL('lastWindowClosed()'), self, SLOT('quit()'))
    Alles anzeigen


    Controller

    Quellcode

    1. from mailsctl import *
    2. from displayctl import *
    3. from configctl import *
    4. from imapctl import *
    5. from statusctl import *
    6. class AppCtrl(object):
    7. "Controller - hier werden die Daten verarbeitet und an die Ausgabe geschickt"
    8. def __init__(self, model):
    9. self.model = model
    10. self.config = ConfigCtrl(self, model.config)
    11. self.imap = ImapCtrl(self, model.imap)
    12. self.status = StatusCtrl(self)
    13. #Controller fuer die View
    14. self.folder = FolderCtrl(self)
    15. self.mails = MailsCtrl(self)
    16. self.display = DisplayCtrl(self)
    17. def renew(self):
    18. self.model.config.renew()
    19. self.config = ConfigCtrl(self, self.model.config)
    20. def register_view(self, view):
    21. AppCtrl.register_view.__init__(self, view)
    22. self.view = view
    23. self.view.createActions()
    24. self.view.createMenus()
    25. self.view.createToolBar()
    26. self.view.startup()
    27. self.status.setText("View geladen")
    Alles anzeigen
    Dateien