gpt4 book ai didi

python - 如何让我的电子邮件每封电子邮件只显示一次?

转载 作者:行者123 更新时间:2023-11-28 18:21:30 25 4
gpt4 key购买 nike

我一直在制作一个 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 循环,它会一遍又一遍地显示相同的电子邮件(直到收到新的电子邮件)。

我怎样才能做到:

  1. 只显示一次收到的邮件,直到收到新的邮件为止
  2. 只显示一次新的
  3. 永远重复

最佳答案

所以您基本上想要开发一个电子邮件监听器...在下面的代码中,我将只下载看不见的电子邮件,这样我们就有了相关数据。然后,一旦提取了一封电子邮件,我将其标记为“已读”,这样它的 ID 就不会再次出现:

while 1:
r, search_data = mail.search(None, "UNSEEN") #gets only the unseen emails
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
mail.store(search_data[0].replace(' ',','),'+FLAGS','\Seen') #marks as read

现在,至少您的代码不会一次又一次地打印同一封电子邮件。在快速接收新电子邮件方面,IMAP 通常比 POP3 更可靠。不过,这可能需要一些时间。

关于python - 如何让我的电子邮件每封电子邮件只显示一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44831383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com