如何使用 IMAPClient 将电子邮件标志更改为“最近”

use*_*462 4 python imaplib

我正在使用 IMAPClient (Python) 从我的电子邮件服务器中检索电子邮件,方法是检查标有“\Recent”的电子邮件。阅读电子邮件后,电子邮件服务器会自动将电子邮件标志设置为“\Seen”。

我想要做的是将电子邮件标志重置为“\Recent”,因此当我直接在服务器上查看电子邮件时,它仍然显示为未读。

我发现当我尝试使用 IMAPClient 的“set_flag”定义将“\Recent”标志添加到电子邮件时,IMAPClient 抛出异常。添加任何其他标志都可以正常工作。

IMAPClient 文档说“最近”标志是只读的,但我想知道是否还有办法将电子邮件标记为未读。

根据我的理解,像 Thunderbird 这样的电子邮件软件允许您将电子邮件设置为未读,所以我认为必须有办法做到这一点。

谢谢。

Men*_*its 5

为了完整起见,这里有一个使用 IMAPClient 的实际示例。\Seen 标志被更新以控制消息被标记为已读还是未读。

from imapclient import IMAPClient, SEEN

client = IMAPClient(...)
client.select_folder('INBOX')
msg_ids = client.search(...)

# Mark messages as read
client.add_flags(msg_ids, [SEEN])

# Mark messages as unread
client.remove_flags(msg_ids, [SEEN])
Run Code Online (Sandbox Code Playgroud)

请注意,使用add_flagsremove_flags而不是set_flags因为后者将标志重置为指定的标志。在设置已读/未读状态时,您通常希望保留任何其他消息标志不变。

还值得注意的是,可以调用fetch使用“BODY.PEEK”数据项来检索部分消息而不影响 \Seen 标志。这可以避免在下载消息后修复 \Seen 标志的需要。

有关更多详细信息,请参阅RFC 3501 的第 6.4.5 节