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

标签 python imaplib

我正在使用 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_flagsremove_flags 而不是 set_flags,因为后者会将标志重置为指定的标志。设置已读/未读状态时,您通常希望保留任何其他消息标记不变。

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

参见 section 6.4.5 of RFC 3501了解更多详情。

关于python - 如何使用 IMAPClient 将电子邮件标志更改为最近,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9058865/

相关文章:

python - 给定所需元素列表,如何从列表中选择最佳(成本)卖家团队

python - PyTorch 安装失败找不到满足要求的版本

python - 使用 Python 从 Gmail 中提取信息

django - 以 HTML、imaplib 和 Django 的形式获取文本

python - 获取每月数据库的每日平均值

python - 获取标签之间的字符串(<div><p>p1</p>TEST<p>p2</p></div> 中的 TEST)

python - 我无法使用 Python 在 Gmail 中搜索已发送的电子邮件

python - 复制后如何唯一标识 IMAP 邮件?

python-2.7 - 使用带有 Arduino Yún 的 Python 检索 gmail 时出现 IMAP4_SSL 错误

python - 使用线程时单元测试 Python 中的 time.sleep()