Seite 1 von 1

Probleme mit imaplib fetch Formaten

Verfasst: Dienstag 27. September 2011, 11:56
von Jurudoca
Hallo! Ich will eine Nachricht auslesen, die im utf8 Format auf dem Emailserver liegt. Der Code unten produziert Outputs wie: "=C3=96sterreich" für "Österreich". Woran kann das liegen und wie änder ich das? Grüße Jurudoca

Code: Alles auswählen

import imaplib
import email

imap4 = imaplib.IMAP4(SERVER)
imap4.login(USER, PASSWORD)
imap4.select()
typ, data = imap4.search(None,'(UNSEEN SUBJECT "%s")' % subject)
for num in data[0].split():
    typ, data = imap4.fetch(num,'(RFC822)')
    msg = email.message_from_string(data[0][1])
    typ, data = imap4.store(num,'-FLAGS','\\Seen')
    print msg    

Re: Probleme mit imaplib fetch Formaten

Verfasst: Dienstag 27. September 2011, 13:02
von Jurudoca
okay liegt an MIME, das “quoted-printable” benutzt und wahrscheinlich was anders codiert hat...mit decode('quopri').decode('utf-8') geht das wieder


imap4 = imaplib.IMAP4(SERVER)
imap4.login(USER, PASSWORD)
imap4.select()
typ, data = imap4.search(None,'(UNSEEN SUBJECT "%s")' % subject)
for num in data[0].split():
typ, data = imap4.fetch(num,'(RFC822)')
msg = email.message_from_string(data[0][1])
typ, data = imap4.store(num,'-FLAGS','\\Seen')
s = str(msg)
# Hier den Dekoder rein...geht bestimmt auch eleganter...
ds = s.decode('quopri').decode('utf-8')
print ds