Ich habe ein Django-Projekt, wo ich an einem E-Mail-Client arbeite. Ich habe mich dafür entschieden, IMAPClient von Python anstelle von imaplib
der Standardbibliothek zu verwenden, um Zugriff auf die Nachrichten zu erhalten. Zur Zeit verwende ich python's email package nicht zum Codieren/Decodieren von Antworten, die von IMAPClient empfangen werden, und ich habe das Gefühl, dass ich Dinge manuell umsetze, die von email gehandhabt werden sollten.Interaktion zwischen Python IMAPClient-Bibliothek und E-Mail-Paket
Beispielcode zum Download attachment:
def download_attachment(server, msgid, index, encoding):
# index and encoding is known from previous analysis of bodystructure
file_content = f_fetch(server, msgid, index)
# the below code should be handled by email's message_from_bytes
# and subsequent get_payload(decode = True) function
if encoding == 'base64':
file_content = base64.b64decode(file_content)
elif ...
...
endif
#writing file_content to a folder
return
def f_fetch(server, msgid, index):
if not index:
index = '1'
response = server.fetch(msgid, 'BODY[' + index + ']')
key = ('BODY[' + index + ']').encode('utf-8')
if type(msgid) is str:
msgid = int(msgid)
return response[msgid][key]
Die Frage ist also, wie soll ich diesen Code neu schreiben, um den Einsatz von email zu machen. Speziell, Was soll ich mit der Antwort von IMAPClient tun, um es an E-Mail-Funktion message_from_bytes() zu übergeben?
Wenn Sie das E-Mail-Paket verwenden möchten, sollten Sie wahrscheinlich direkt imaplib verwenden, da IMAPClient die Nachricht bereits analysiert hat. –
@Serge, also bedeutet es, dass ich, solange ich IMAPClient verwende, das Paket "email" vergessen sollte? –
Unsicher davon (der Grund, warum es ein Kommentar ist und keine Antwort ...). Ich verwende IMAPClient nicht, aber ich dachte, dass eines seiner Hauptinteressen darin besteht, die Nachricht zu parsen. Wenn Sie das nicht brauchen, bin ich mir nur nicht sicher, wie Sie IMAPClient verwenden und warum es besser ist als imaplib. Entschuldigung, nicht in der Lage zu sein, mehr zu helfen ... –