ich habe ein Python3 Skript geschrieben. Dieses holt die Daten über pop3 ab. Leider erhalte ich die Mail mit Header und Body. Mein Ziel wäre es jedoch nur die Informationen im Mail-Body zu erhalten. Hätte jemand hierzu eine Idee oder einen Tipp.
@Mardor: Die Standardbibliothek hat alles was man braucht um E-Mails zu parsen und die Einzelteile zu extrahieren. Alternativ könntest Du Dir die Spezifikation von E-Mails anschauen und selbst die Header abtrennen. Das ist recht einfach.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Entweder händisch in dem du nur den Teil ab dem Boundary ausgibst, oder du verwendest einfach ein entsprechendes Modul zum parsen von Emails. Für Python3 gibt's z.B. email.utils.
When we say computer, we mean the electronic computer.
Nein, poplib ist ja afaik nur dazu da, um eine Mail von einem Server zu holen. Mit den zusätzlichen email-Modulen die bereits in der Standardbibliothek von Python (also bei der Installation) enthalten sind, kannst du die Nachricht parsen und verarbeiten.
anzahl = emailinfo[0]
for i in range(anzahl):
for email in pop3_conn.retr(i + 1)[1]:
message = email.message_from_string(email.decode())
print(message.get_payload())
When we say computer, we mean the electronic computer.
Jeder Name kann logischerweise nur an einen Wert zur gleichen Zeit gebunden werden. Wenn Du eine Funktion aus dem `email`-Modul verwenden willst, darfst Du die Bytes der Mail halt nicht *auch* an den Namen `email` binden, denn dann kommst Du über den Namen nicht mehr an das Modul heran.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
in meinem Beispiel ist ein Fehler, da bei der Iteration der Name ´email´ das email-Modul shadowed. Du kannst stattdessen sowas wie ``for message in ...`` schreiben, um `email.message_from_string()` gefahrlos verwenden zu können und keine Kollision zu riskieren.
When we say computer, we mean the electronic computer.