在这里和互联网上搜索,有很多关于如何将消息标记为可见的示例,即使这是使用imap自动执行的。
但是,我如何将电子邮件标记为UNSEEN
或UNREAD
呢?
我有一个用python编写的脚本,它可以接收UNSEEN
消息,它工作得很好。但在读取它们之后,imap会自动将它们标记为SEEN
,但只有在脚本没有错误的情况下才能正常工作,因为如果它引发异常,我希望电子邮件再次标记为UNSEEN
,所以下一次脚本将再次读取该消息。
我怎样才能做到这一点呢?
我也使用了mail.select(mail_label,readonly=True)
,但它没有帮助,因为我不能将消息标记为SEEN
,这也是我需要的。我也希望它能和Gmail一起工作。
发布于 2013-06-28 23:22:40
您可以使用以下命令轻松清除\Seen
标志:
tag UID STORE -FLAGS (\Seen)
但是,如果您只在成功处理消息后的第一个位置设置\Seen
标志,那么您的软件可能会有更多的robost。这样,如果在处理消息时出现任何错误(即使与IMAP服务器的连接断开),该标志也将保持未设置状态,并且您可以在下次运行脚本时重试该消息。您可以通过使用BODY.PEEK
而不是BODY
来避免IMAP服务器自动设置\Seen
标志。
在Python中,我认为应该像这样发出STORE
命令,但我还没有尝试过。
connection.uid('STORE', '-FLAGS', '(\Seen)')
发布于 2014-01-31 19:55:08
在Python中,imaplib模块将STORE描述为:
(typ, [data]) = <instance>.store(message_set, command, flags)
因此,下面这行代码允许您根据需要将消息设置为已读(‘+标志’)或未读(‘-标志’)。
connection.uid('STORE', MESSAGE_ID, '+FLAGS', '\SEEN')
正如您所看到的,这些秘密位于FLAGS命令上;)
发布于 2019-10-10 23:24:54
您可以使用imap_tools包:https://pypi.org/project/imap-tools/
from imap_tools import MailBox, MailMessageFlags, A
with MailBox('imap.mail.com').login('test@mail.com', 'pwd', 'INBOX') as mailbox:
# FLAG unseen messages in current folder as Answered and Flagged, *in bulk.
flags = (MailMessageFlags.ANSWERED, MailMessageFlags.FLAGGED)
mailbox.flag(mailbox.fetch(A(seen=False)), flags, True)
# SEEN: mark all messages sent at 05.03.2007 in current folder as unseen, *in bulk
mailbox.flag(mailbox.fetch("SENTON 05-Mar-2007"), MailMessageFlags.SEEN, False)
我是lib的作者。
https://stackoverflow.com/questions/17367611
复制相似问题