在这里和互联网上搜索,有很多关于如何将消息标记为 SEEN 的示例,即使这是使用 imap 自动完成的。
但是如何将电子邮件标记为 UNSEEN
或 UNREAD
。
我有一个 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/