2012-02-14 55 views
-1

我試圖獲取電子郵件ID,然後獲取所有這些結果。我該怎麼做呢?謝謝!python imaplib gmail從列表中獲取多個結果

下面是我的代碼:

import imaplib 
import re 

user = 'user' 
pwd = 'password' 
imap_server = imaplib.IMAP4_SSL('imap.gmail.com', 993) 
imap_server.login(user, pwd) 
imap_server.select('Inbox') 
typ, response = imap_server.search(None, '(SUBJECT "Hello")') 
response = str(response[0]) 
response_re = re.compile('\d+') 
response_pat = re.findall(response_re, response) 

for i in response_pat: 
    results, datas = imap_server.fetch(i, "(RFC822)") 

因爲我在DATAS:

print i 

這仍然對打印DATAS的一個值,當我已經通過多個#values列表迭代。

+1

請停止使用粗體和大號打印文本來告訴我們您想要什麼。如果你問一個問題,請禮貌地問。 – 2012-02-14 18:09:51

+0

如果要遍歷數據,則必須將其存儲爲每次獲取。創建一個列表:'datas = []',然後將數據追加到列表中。 'datas.append(data)' – 2012-02-14 19:40:19

+0

@JasonYeo他不使用粗體,他只是沒有正確格式化...(即它是一個哈希註釋,看起來像是粗體文本) – Irfy 2012-02-22 00:35:33

回答

1

您在命令中輸入了錯誤。它應該是RFC822而不是RCF822。只需更改一行代碼即可。從

results, datas = imap_server.fetch(i, "(RCF822)") 

將此行更改爲

results, datas = imap_server.fetch(i, "(RFC822)") 

並且還,不使用正則表達式時,你可以簡單地使用字符串庫。不要使用正則表達式,只需在循環中執行此操作:

for i in response[0].split(): 
    results, datas = m.fetch(i, "(RFC822)")