我正在使用 IMAPClient (Python) 从我的电子邮件服务器中检索电子邮件,方法是检查标记有“\Recent”的电子邮件。阅读电子邮件后,电子邮件服务器会自动将电子邮件标志设置为“\Seen”。
我想做的是将电子邮件标志重置为“\Recent”,这样当我直接在服务器上查看电子邮件时,仍显示为未读。
我发现当我尝试使用 IMAPClient 的“set_flag”定义将“\Recent”标志添加到电子邮件时,IMAPClient 抛出异常。添加任何其他标志都可以正常工作。
IMAPClient 文档说 Recent 标志是只读的,但我想知道是否还有办法将电子邮件标记为未读。
据我所知,像 Thunderbird 这样的电子邮件软件允许您将电子邮件设置为未读,所以我认为一定有办法做到这一点。
谢谢。
最佳答案
为了完整起见,这里有一个使用 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])
请注意,使用 add_flags
和 remove_flags
而不是 set_flags
,因为后者会将标志重置为指定的标志。设置已读/未读状态时,您通常希望保留任何其他消息标记不变。
还值得注意的是,可以使用“BODY.PEEK”数据项调用 fetch
来检索部分消息,而不会影响\Seen 标志。这可以避免在下载消息后需要修复\Seen 标志。
参见 section 6.4.5 of RFC 3501了解更多详情。
关于python - 如何使用 IMAPClient 将电子邮件标志更改为最近,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9058865/