2016-07-12 4 views
0
import getpass, poplib 
user = 'my_user_name' 
Mailbox = poplib.POP3_SSL('pop-mail.outlook.com.com', '995') 
Mailbox.user(user) 
Mailbox.pass_('my_password') 
numMessages = len(Mailbox.list()[1]) 
for i in range(numMessages): 
    for msg in Mailbox.retr(i+1)[1]: 
     print msg 
Mailbox.quit() 

Der obige Code stammt aus Python POP3-Dokumente, habe ich das verwendet und es hat funktioniert. Aber das will ich eigentlich nicht. Ich möchte E-Mails lesen, die nur von einer bestimmten Adresse stammen. Ich habe keine Methoden in Python POP3-Bibliothek gefunden. Kann jemand helfen?Lesen Outlook E-Mail mit einer bestimmten Adresse in Python mit POP3

+0

POP3 hat keine Filter/Suchfunktionen. Sie müssen die E-Mails selbst durchsehen. – poke

+0

ohh ... was ist mit IMAP? hat das? –

Antwort

0

Das POP3-Protokoll erlaubt nur:

  • die Anzahl der Nachrichten erhalten
  • abrufen eine vollständige Nachricht
  • löschen eine Nachricht

Ein optionaler Befehl (TOP msg n) erlaubt nur die n ersten Zeilen einer Nachricht lesen. Theoretisch könnten Sie damit nur Nachrichten von einer bestimmten Adresse vollständig herunterladen. Dieser Befehl wird vom poplib-Modul unterstützt, aber das Handbuch sagt:

... leider ist TOP in den RFCs schlecht spezifiziert und wird häufig in Off-Marken-Servern gebrochen. Testen Sie diese Methode manuell gegen die POP3-Server, die Sie verwenden, bevor Sie ihr vertrauen.

Mein Rat ist nicht einmal versuchen, zu verwenden, dass, ist es wahrscheinlich früher oder später brechen. Wenn Sie bei POP3 bleiben müssen, tun Sie was Mail-Leser tun: Laden Sie alles herunter und filtern Sie es Client-Seite. Und wenn Sie die Nachrichtenserver-Seite wirklich filtern möchten, vergessen Sie das POP3-Protokoll und verwenden Sie IMAP4, das darauf ausgerichtet ist. Es hat eine gute Unterstützung in Python durch die imaplib Modul

Verwandte Themen