2012-05-12 69 views
6

我在Gmail的SMTP服務器上使用該工具,並且我想通過IMAP搜索發送到或收到地址的電子郵件。Python IMAP從指定的電子郵件地址搜索

這是我有:

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]"') 

錯誤的最後一行是:imaplib.error: SEARCH command error: BAD ['Could not parse command']

不知道我應該怎樣做這種或語句中Python的imaplib。如果有人能夠快速解釋發生了什麼問題或者指引我朝着正確的方向發展,那麼我們將不勝感激。

回答

14

您收到的錯誤是由服務器生成的,因爲它無法正確解析搜索查詢。爲了生成有效的查詢,請參見RFC 3501,在第49頁中詳細介紹了結構。

例如搜索字符串是正確的應該是:

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

謝謝。我一直在尋找正確的搜索語法(Google上沒有很多有用的頁面)。 – Tech163

+1

@ Tech163不客氣。通過這些協議,您必須直接訪問源代碼(RFC)以獲取最佳信息。 –

+1

看起來'FROM'可能需要更改爲'HEADER FROM'等,只有後者對我有用。 –

相關問題