Probleme mit imaplib fetch Formaten

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
Jurudoca
User
Beiträge: 23
Registriert: Dienstag 26. Juli 2011, 13:58

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    
Jurudoca
User
Beiträge: 23
Registriert: Dienstag 26. Juli 2011, 13:58

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
Antworten