Emails von 1und1 abfragen

  • Ich habe mir ein Email-Konto nur für den Raspberry angelegt. Das Versenden einer Email habe ich in Python schon geschafft. Der Script läuft wunderbar. Jetzt versuche ich die Emails abzurufen mit folgenden Script abzurufen:
    import smtplib
    import poplib
    from subprocess import check_output
    from email.mime.text import MIMEText

    EmailAdresse = 'user@online.de'
    Passwort = '1234'
    # Verbindung aufbauen
    Session = poplib.POP3_SSL('pop.1und1.de','995')
    Session.user = EmailAdresse
    Session.pass_= Passwort


    # Email lesen und Sitzung schliessen

    Status=Session.list()
    print Status
    Session.quit()

    Leider bekomme ich folgende Fehlermeldung:
    Traceback (most recent call last):
    File "EmailEmpfang.py", line 16, in <module>
    Status=Session.list()
    File "/usr/lib/python2.7/poplib.py", line 224, in list
    return self._longcmd('LIST')
    File "/usr/lib/python2.7/poplib.py", line 167, in _longcmd
    return self._getlongresp()
    File "/usr/lib/python2.7/poplib.py", line 143, in _getlongresp
    resp = self._getresp()
    File "/usr/lib/python2.7/poplib.py", line 136, in _getresp
    raise error_proto(resp)
    poplib.error_proto: -ERR command not allowed in this state


    Habt Ihr einen Tipp für mich?

  • Sali Unimog.

    Herzlich willkommen im Forum.

    Sofern ich den Code richtig verstanden habe, versuchst du eien Liste auszugeben doch da fehlt dann ein () um den Variablen namen.
    Versuche es mal mit

    [code=php]print (Status)[/php]


    Gruss Dani

  • Hallo,

    die Fehlermeldung besagt, dass zu diesem Zeitpunkt der Server das Kommando`list()` nicht akzeptiert. Warum auch immer.

    Um mehr Info zu bekommen, kannst du, wie von bootsmann vorgeschlagen, mal

    Code
    Session.set_debuglevel(2)

    setzen, dann wird poplib gesprächiger.

    Das du `Session` groß schreibst ist übrigens verwirrend - per Konvention schreibt man Namen von Klasse in Python groß, Instanzen von Klassen (wie in deinem Fall) aber klein.

    Gruß, noisefloor

  • Ich habe die Lösung über IMAP4 gefunden.
    Ich habe nur noch ein Problem in den folgenden Zeilen:

    Ergebniss = subprocess.Popen(Zwischenbuffer[0])
    print Ergebniss
    Nachrichtentext = 'Hier ist das Ergbniss:' +chr(13) +str(Ergebniss)

    Im Zwischenbuffer steht ein Befehl (z.B. 'free') Auf der Konsole kommt auch das richtige Ergebniss. Im Nachrichtentext dann folgendes:
    Hier ist das Ergbniss:
    <subprocess.Popen object at 0x766faed0>

  • Blöde Frage: Wofür verwendest du subprocess ?

    In "Ergebniss" steht ein Objekt drin das du weiter verarbeiten musst.


    Generell sollte man möglichst viel in der jeweiligen Sprache umsetzen. Also möglichst nicht bash/Konsolen Befehle über python ausführen.

    FAQ => Nützliche Links / Linksammlung => EMail
    FAQ => Nützliche Links / Linksammlung => HowTo: CODE / PHP Code im Forum posten

  • Dann empfehle ich dir einen Blick auf FAQ --> Nützliche Links / Linksammlung --> Server/PI Steuerung via EMail zu werfen.

    Es kann ziemlich gefährlich werden wenn einfach so jede Email deines Postfachs einen Befehl auf dem Pi ausführen kann. In besagtem Beitrag sind 2 Schutzmechanismen eingebaut um sicherzustellen das nur berechtigte Personen/Emails das dürfen.

    Und wie bereits erwähnt, sollte man möglichst viel in der jeweiligen Sprache umsetzen. Es wäre denk ich besser du definierst nur ein paar Schlüsselwörter und das Script kümmert sich dann ums zurückliefern...
    Sprich, keine direkte Ausführung des gesendeten "Befehls", denn das könnte ein Angreifer ausnutzen (Stichwort: Injection), sondern du sendest zum Beispiel "space" und dein Python Script führt dann die nötige Ermittlung des freien Speicherplatzes aus... Dafür kannst du das sehr mächtige Module nutzen: https://github.com/giampaolo/psutil
    In besagtem "Server/PI Steuerung via EMail" Beitrag wird zum Beispiel das Schlüsselwort "Bild" abgefragt.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!