我一直在做一个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