Pathon IMAP Mailabrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
reneschmidt
User
Beiträge: 48
Registriert: Montag 4. Januar 2016, 15:14

Hallo zusammen,

ich versuche per Python und Imap Mails aus einem postfach abzurufen.
Leider bekomme ich die Mail nicht verarbeitet:

Code: Alles auswählen

#!/usr/bin/python
import email
from email.header import Header, decode_header, make_header
import os
import poplib
import time
import subprocess
import imaplib
import re
import sys

MAILSERVER = ""
BENUTZER = ""
PASSWORT = ""
POSTEINGANG = "INBOX"

imap = imaplib.IMAP4_SSL(MAILSERVER)
imap.login(BENUTZER,PASSWORT)

imap.select(POSTEINGANG)
typ, data  = imap.search(None, 'All')

for mailid in data[0].split(' '):
        if str(mailid) != "":
                typ, maildata = imap.fetch(mailid,'ALL')

                emailBody = maildata[0]

                mail = email.message_from_string(emailBody)
                betreff = ""
                try:
                        decode = email.header.decode_header(mail['Subject'])[0]
                except ValueError:
                        betreff = "Betreff mit Umlauten"
                else:
                        try:
                                subject = unicode(decode[0])
                        except ValueError:
                                betreff = "Betreff mit Umlauten"
                        else:
                                betreff = subject

                #Lese Absender:
                absender = ""
                try:
                        decode = email.header.decode_header(mail['From'])[0]
                except ValueError:
                        absender = "Absender mit Umlauten"
                else:
                        try:
                                dec = unicode(decode[0])
                        except ValueError:
                                absender = "Absender mit Umlauten"
                        else:
                                absender = dec
                attcnt = 0

                print ""
                print "bearbeite Mail:"
                print "Betreff: " + betreff
                print "Absender: " + absender
Leider liefert dieser Aufruf nichts wirklich etwas zurück.

nur folgendes Zurück:
bearbeite Mail:
Betreff: None
Absender: None

darauf habe ich mir das ein Mal Schritt für Schritt angesehen:
maildata[0] sieht wie folgt aus:
['11 (FLAGS () INTERNALDATE "06-Mar-2019 07:04:20 +0100" RFC822.SIZE 66226 ENVELOPE ("Wed, 6 Mar 2019 07:04:15 +0100" "Rechnung" (("********" NIL "(("********" " "gmx.net")) NIL NIL (("rechnung" NIL "rechnung" "(("********" .de")) NIL NIL NIL "<(("********" ==@gmx.net>"))']

Wo liegt das Problem, das da keine verwertbare ausgabe rauskommt.

Ich habe das schon mal genau so gemacht auf einem anderen System vor einiger Zeit und da hat das Funktioniert...
Installiert ist Python 2.7.12

Vielen Dank für die Hilfe
reneschmidt
User
Beiträge: 48
Registriert: Montag 4. Januar 2016, 15:14

Nachtrag:

Wenn ich die Zeile
typ, maildata = imap.fetch(mailid,'ALL')

durch
typ, maildata = imap.fetch(mailid,'(RFC822)')
(https://codehandbook.org/how-to-read-em ... ng-python/)

erhalte ich folgende Meldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "./rgabruf.py", line 100, in <module>
    typ, maildata = imap.fetch(mailid,'(RFC822)')
  File "/usr/lib/python2.7/imaplib.py", line 456, in fetch
    typ, dat = self._simple_command(name, message_set, message_parts)
  File "/usr/lib/python2.7/imaplib.py", line 1088, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "/usr/lib/python2.7/imaplib.py", line 910, in _command_complete
    typ, data = self._get_tagged_response(tag)
  File "/usr/lib/python2.7/imaplib.py", line 1017, in _get_tagged_response
    self._get_response()
  File "/usr/lib/python2.7/imaplib.py", line 929, in _get_response
    resp = self._get_line()
  File "/usr/lib/python2.7/imaplib.py", line 1027, in _get_line
    line = self.readline()
  File "/usr/lib/python2.7/imaplib.py", line 1189, in readline
    return self.file.readline()
  File "/usr/lib/python2.7/socket.py", line 451, in readline
    data = self._sock.recv(self._rbufsize)
  File "/usr/lib/python2.7/ssl.py", line 756, in recv
    return self.read(buflen)
  File "/usr/lib/python2.7/ssl.py", line 643, in read
    v = self._sslobj.read(len)
socket.error: [Errno 104] Connection reset by peer
Liegt das jetzt am Mailserver?
Antworten