2012-07-07 48 views
0

這可能是一個新手問題,但我不明白爲什麼我無法成功地將參數化搜索條件傳遞給imaplib。解析錯誤將搜索條件傳遞給imaplib

設置代碼:

M = imaplib.IMAP4_SSL("imap.gmail.com", 993) 
M.login("usrname", "passwd") 
typ, data = self.M.select() # Select default mailbox 

以下工作:

typ, data = M.uid('search', None, '(SENTSINCE 01-Jan-2010)') 

但是,如果我嘗試通過搜索條件的字符串,我得到

imaplib.error: UID command error: BAD ['Could not parse command'] 

這是代碼失敗:

f = "'(SENTSINCE 01-Jan-1994)'" 
typ, data = M.uid('search', None, f) 

我試過很多的語法,閱讀RFC3501。這是一個字符集問題嗎?

+0

嘗試刪除中的一組字符串'引號F' – mata 2012-07-07 19:33:42

+0

是啊 - 那做的我很尷尬說.. imaplib和gmail是非常關注標準的語法,我在我的實際代碼(一個多餘的空間和缺少的引號)有兩個其他問題。所有這三個問題都給出了BAD解析錯誤,但是在我的測試中,我沒有同時修復過這三個問題。想了解括號在這種情況下的工作原理,所以對於核心文檔的任何提示都將不勝感激。 – richmill 2012-07-09 19:05:22

+1

請澄清這個問題,原始錯誤,以及作爲答案的實際答案。我有類似的問題,並且一直在尋找答案很多個月...... – jml 2013-06-17 19:02:21

回答

0

你需要把引號內的日期和你的代碼,這將是:

typ, data = M.uid('search', None, '(SENTSINCE "01-Jan-2010")')