我一直在做一個Python腳本,因爲在登錄該檢查電子郵件這裏是我到目前爲止的代碼:如何才能讓我的電子郵件只顯示一次每封電子郵件?
#!/usr/bin/python
import imaplib, getpass
mail = imaplib.IMAP4_SSL('imap.gmail.com')
u = raw_input('Your Gmail Address: ')
p = getpass.getpass()
mail.login(u, p)
mail.select("inbox")
while 1:
r, data = mail.search(None, "ALL")
ids = data[0]
id_list = ids.split()
latest_email_id = id_list[-1]
r, data = mail.fetch(latest_email_id, "(RFC822)")
raw_email = data[0][1]
print raw_email
的問題是,它一直顯示相同的電子郵件一遍又一遍(直到一個新的一個被接收)因爲while
循環。
我怎樣才能使它:
- 只顯示已接收電子郵件的一次,直到接收到新的一個
- 只顯示了新的一次
- 重複永遠
您需要保存所有您以前顯示的信息的ID。然後瀏覽列表並跳過保存列表中的所有內容。 – Barmar
@Barmar你能解釋一下嗎?我剛接觸'imaplib'。 – keeganjk
這只是基本的Python數據結構。使用'set'來保存你所看到的所有ID。然後在'id_list:'中做'id來遍歷所有的ID,測試它們是否在集合中。如果它不在集合中,則打印電子郵件並將該ID添加到集合中。 – Barmar