python imaplib-将电子邮件标记为未读或未查看
在这里和互联网上搜索时,有很多示例说明如何将邮件标记为已看到,尽管这是imap自动完成的 但是如何将电子邮件标记为python imaplib-将电子邮件标记为未读或未查看,python,imap,Python,Imap,在这里和互联网上搜索时,有很多示例说明如何将邮件标记为已看到,尽管这是imap自动完成的 但是如何将电子邮件标记为未查看或未读 我有一个python脚本,它接收看不见的消息,效果非常好。但是在读取它们之后,imap会自动将它们标记为已查看,这很好,但只有在脚本没有错误的情况下才可以,因为如果它引发异常,我希望电子邮件再次标记为未查看,因此下次脚本将再次读取该消息 我怎样才能做到这一点 我还使用了mail.select(mail\u label,readonly=True),但它没有帮助,因为我无
未查看
或未读
我有一个python脚本,它接收看不见的
消息,效果非常好。但是在读取它们之后,imap会自动将它们标记为已查看
,这很好,但只有在脚本没有错误的情况下才可以,因为如果它引发异常,我希望电子邮件再次标记为未查看
,因此下次脚本将再次读取该消息
我怎样才能做到这一点
我还使用了
mail.select(mail\u label,readonly=True)
,但它没有帮助,因为我无法将邮件标记为我也需要的seed
。我也希望Gmail也能这样做。您可以使用以下命令轻松清除\Seen
标志:
tag UID STORE -FLAGS (\Seen)
但是,如果您在成功处理消息之后才首先设置\Seen
标志,那么您的软件可能会更加健壮。这样,如果在处理消息时出现任何错误(即使与IMAP服务器的连接已断开),该标志仍将保持未设置状态,您可以在下次脚本运行时重试该消息。通过使用BODY.PEEK
而不是BODY
来避免IMAP服务器自动设置\Seen
标志,可以做到这一点
在Python中,我认为应该像这样发出STORE
命令,但我还没有尝试过
connection.uid('STORE', '-FLAGS', '(\Seen)')
在Python中,imaplib模块将存储描述为:
(typ, [data]) = <instance>.store(message_set, command, flags)
如您所见,机密在FLAGS命令中;) 您可以使用imap_工具包: 如果readonly=“True”,则无法更改任何标志。 但是,如果它是假的,你可以做如下的事情
imap.store(id, '-FLAGS', '\Seen')
然后电子邮件将标记为未读
(-)表示删除标志,(+)表示添加标志
例如:您可以设置imap.store(id,“+FLAGS”,“已删除”)
来删除电子邮件。像这样,你可以在下面设置任何标志
\Seen Message has been read
\Answered Message has been answered
\Flagged Message is "flagged" for urgent/special attention
\Deleted Message is "deleted" for removal by later EXPUNGE
\Draft Message has not completed composition (marked as a
draft).
更多详细信息:使用imaplib,要查看,我使用:
.fetch(num'(BODY.PEEK[]))
。
`imap = imaplib.IMAP4_SSL(server)
imap.login(username, password)
imap.select("inbox", readonly=False)`
imap.store(id, '-FLAGS', '\Seen')
\Seen Message has been read
\Answered Message has been answered
\Flagged Message is "flagged" for urgent/special attention
\Deleted Message is "deleted" for removal by later EXPUNGE
\Draft Message has not completed composition (marked as a
draft).