python imaplib - 将电子邮件标记为未读或未看到

标签 python imap

在这里和互联网上搜索,有很多关于如何将消息标记为 SEEN 的示例,即使这是使用 imap 自动完成的。

但是如何将电子邮件标记为 UNSEENUNREAD

我有一个 python 脚本,它接收 UNSEEN 消息,而且效果很好。但是在阅读它们之后,imap 会自动将它们标记为 SEEN 这可以正常工作,但前提是脚本没有错误,因为如果它引发异常,我希望将电子邮件再次标记为 UNSEEN ,所以下次脚本将再次读取该消息。

我怎样才能做到这一点?

我也使用过 mail.select(mail_label,readonly=True),但它没有帮助,因为我无法将邮件标记为 SEEN 我还需要。我也希望它能与 Gmail 一起使用。

最佳答案

您可以使用此命令轻松清除 \Seen 标志:

tag UID STORE -FLAGS (\Seen)

但是如果您只在成功处理一条消息后首先设置 \Seen 标志,您的软件可能会更健壮。这样,如果您在处理消息时出现任何问题(即使与 IMAP 服务器的连接断开),该标志仍​​未设置,您可以在下次脚本运行时重试该消息。为此,您可以使用 BODY.PEEK 而不是 BODY 来避免 IMAP 服务器自动设置 \Seen 标志。

在 Python 中,我认为 STORE 命令应该像这样发出,但我还没有尝试过。

connection.uid('STORE', '-FLAGS', '(\Seen)')

关于python imaplib - 将电子邮件标记为未读或未看到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17367611/

相关文章:

python - 无法在 Django 中调试或使用 pdb : bdb. BdbQuit

python - 使用 numpy 数组和元组保持每个元素出现一次的快速方法

python - 如何在 Python 中生成动态(参数化)单元测试?

python - 使用 python imaplib 到 "delete"来自 Gmail 的电子邮件?

sockets - 使用 S22 ImapClient 接收 Gmail 电子邮件时,尝试对无法访问的网络进行套接字操作 [2a00:1450:4013:c01::6d]:993

python - 如何在 python 中读取 config(.ini) 文件,它将在 2.7 和 3.x python 上运行

java - 是否有规范将 INBOX 定义为主文件夹?

c# - 如何获取指定的消息标签?

sockets - 使用 Tor 套接字通过 ssl 访问 imap

python - 在 Pandas DataFrame 的一列中查找并替换所有匹配但不区分大小写的字符串