read - python receive email




如何在Python中執行IMAP搜索(使用Gmail和imaplib)? (4)

在Gmail中,我有一堆貼有標籤的郵件。

我想使用IMAP客戶端來獲取這些消息,但我不確定搜索咒語是什麼。

c = imaplib.IMAP4_SSL('imap.gmail.com')
c.list()
('OK', [..., '(\\HasNoChildren) "/" "GM"', ...])
c.search(???)

我沒有找到很多這樣的例子。



我很驚訝,imaplib不做很多的響應解析。 而且這個回應似乎很難被解析。

FWIW,回答我自己的問題:c.search(無,“GM”)

(我不知道“(\ HasNoChildren)”/“'部分是關於什麼的。)


import imaplib 
obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)
obj.login('username', 'password')
obj.select('**label name**') # <-- the label in which u want to search message
obj.search(None, 'FROM', '"LDJ"')

將imaplib與Gmail一起使用的最簡單方法是使用“Gmail Imap 擴展”頁面中所述的X-GM-RAW屬性。

這個過程將是這樣的:

首先用適當的電子郵件和密碼連接到帳戶:

c = imaplib.IMAP4_SSL('imap.gmail.com', 993)
email = '[email protected]'
password = 'spamspamspam'
c.login(email, password)

然後連接到其中一個文件夾/標籤:

c.select("INBOX")

如有必要,可以使用c.list()列出所有可用的文件夾/標籤。

最後,使用搜索方法:

gmail_search = "has:attachment eggs OR spam"
status, data = c.search(None, 'X-GM-RAW', gmail_search)

gmail_search您可以使用gmail高級搜索中使用的相同搜索語法。

搜索命令將返回命令的狀態和所有與你的gmail_search匹配的消息的ID。

在此之後,您可以通過ID獲取每個消息:

for id in data[0].split():
    status, data = gmail.fetch(id, '(BODY[TEXT])')




imap