2012-05-12 8 views
6

Ich verwende dies mit dem SMTP-Server von Google Mail, und ich möchte über IMAP nach E-Mails suchen, die an eine Adresse gesendet oder von dieser empfangen wurden. DiesePython IMAP Suche von oder zur angegebenen E-Mail-Adresse

ist, was ich habe:

mail = imaplib.IMAP4_SSL('imap.gmail.com') 

mail.login('user', 'pass') 
mail.list() 
mail.select("[Gmail]/All Mail") 

status, email_ids = mail.search(None, 'TO "[email protected]" OR FROM "[email protected]"') 

Die letzte Zeile des Fehlers ist: imaplib.error: SEARCH command error: BAD ['Could not parse command']

nicht sicher, wie ich soll in Python imaplib diese Art von OR-Anweisung tun. Wenn jemand schnell erklären kann, was falsch ist, oder mich in die richtige Richtung weisen, wäre das sehr zu schätzen.

Antwort

14

Der Fehler, den Sie erhalten, wird vom Server generiert, da die Suchanfrage nicht korrekt analysiert werden kann. Um eine gültige Abfrage zu erzeugen, folgen Sie der RFC 3501, auf Seite 49 wird die Struktur im Detail erklärt.

Zum Beispiel Ihr Suchbegriff als korrekt sein sollte:

'(OR (TO "[email protected]") (FROM "[email protected]"))' 
+1

Danke. Ich suchte nach der richtigen Syntax für die Suche (es gab nicht viele nützliche Seiten bei Google). – Tech163

+1

@ Tech163 Gern geschehen. Bei diesen Protokollen müssen Sie direkt zu den Quellen (RFCs) gehen, um die besten Informationen zu erhalten. –

+1

Es scheint, dass 'FROM' möglicherweise in' HEADER FROM' geändert werden muss. Nur letzteres funktionierte für mich. –