使用imaplib获取邮件但不标记为已读

28 投票
4 回答
13089 浏览
提问于 2025-04-16 01:31

我想从用户的收件箱中解析一些邮件,但当我这样做的时候:

typ, msg_data = imap_conn.fetch(uid, '(RFC822)')

邮件会被标记为已读。这并不是我想要的功能。你知道怎么才能让邮件保持之前的状态,无论是已读还是未读吗?

4 个回答

3

你可以使用 (RFC822.PEEK) 作为“消息部分”的参数,这个说法来源于 RFC 1730(我没有确认哪些服务器实际上正确实现了这个功能,但对它们来说似乎并不难)。

24

下面的代码应该可以正常运行:

typ, msg_data = imap_conn.fetch(uid, '(BODY.PEEK[HEADER])')

或者你也可以用 BODY.PEEK[TEXT] 这样的方式,等等。

46

你在选择文件夹的时候,也可以把 read_only 设置为 true,这样就表示这个文件夹是只读的。

imap_conn.select('Inbox', readonly=True)

撰写回答