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

python imaplib-将电子邮件标记为未读或未查看,python,imap,Python,Imap,在这里和互联网上搜索时,有很多示例说明如何将邮件标记为已看到,尽管这是imap自动完成的 但是如何将电子邮件标记为未查看或未读 我有一个python脚本,它接收看不见的消息,效果非常好。但是在读取它们之后,imap会自动将它们标记为已查看,这很好,但只有在脚本没有错误的情况下才可以,因为如果它引发异常,我希望电子邮件再次标记为未查看,因此下次脚本将再次读取该消息 我怎样才能做到这一点 我还使用了mail.select(mail\u label,readonly=True),但它没有帮助,因为我无

在这里和互联网上搜索时,有很多示例说明如何将邮件标记为已看到,尽管这是imap自动完成的

但是如何将电子邮件标记为
未查看
未读

我有一个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).