我試圖獲取主題以「New Order」開頭的所有電子郵件,但我似乎無法弄清楚。目前我可以搜索一個完全匹配的設置,像這樣...Python IMAP搜索部分主題
result, data = M.uid('search', None, '(HEADER Subject "Subject Here")')
但是,這不會檢索任何不完全匹配的消息。我將如何去做一個部分匹配?
重要如果我正在與gmail的imap服務器通話。
感謝
我試圖獲取主題以「New Order」開頭的所有電子郵件,但我似乎無法弄清楚。目前我可以搜索一個完全匹配的設置,像這樣...Python IMAP搜索部分主題
result, data = M.uid('search', None, '(HEADER Subject "Subject Here")')
但是,這不會檢索任何不完全匹配的消息。我將如何去做一個部分匹配?
重要如果我正在與gmail的imap服務器通話。
感謝
按照IMAP RFCSEARCH
應該做的所有的子串匹配的匹配:
In all search keys that use strings, a message matches the key if the string is a substring of the field. The matching is case-insensitive.
因此,搜索
M.uid('search', None, 'HEADER Subject "New Order"')
其中New Order
任何地方發生應匹配的所有消息在主題。如果不是,則應通知Google其服務器未正確實施IMAP。在此期間,你可以嘗試使用SUBJECT
關鍵在
M.uid('search', None, 'SUBJECT "New Order"')
另外,根據Google's IMAP extension documentation你也許可以使用X-GM-RAW
鍵和Gmail的搜索字符串作爲
M.uid('search', None, r'X-GM-RAW "subject:\"New Order\""')
我想通了哪裏出了問題。 Google/gmail假設所有搜索都是單詞,這意味着'(HEADER Subject「Subject Here)將匹配諸如」Subject Here Extra words for example「之類的內容,但不包含」Subject Here5「。我仍然不確定如何使用gmail進行非單詞搜索,或者甚至有可能。 – Kazurik
您將不得不使用gmails擴展搜索語法。他們只支持正常搜索的面向單詞的搜索。 (他提供的x-gm-raw bit) – Max
當我運行「M.uid('search',None,r'X-GM-RAW」主題:\「New Order \」「')」我得到以下錯誤:「imaplib.error:UID命令錯誤:BAD ['無法解析命令']」。任何想法爲什麼這可能是? – Kazurik
這個工作對我:
mail.uid('search', None, r'(X-GM-RAW "subject:\"New Order\"")')
這爲我工作:
M.uid('search',None, '(SUBJECT "New Order")')
格式搜索(EmailAttribute "your searchstring")
希望它爲你工作。
這爲我工作:
result, data = m.search(None, 'X-GM-RAW', 'subject: New Order')
什麼API您使用/庫,也有什麼'M'? – John
您也可能會發現http://stackoverflow.com/a/642988/322909有用。 – John
我正在使用imaplib庫,M是IMAP4對象。我本來希望只是拉下那些有我想要的主題的信息,而不是我所信任的每一條信息都是他們在鏈接中所做的,儘管我可能是錯的。 – Kazurik