在Gmail上标记为未看到(imaplib)

时间:2016-10-19 13:13:00

标签: python email gmail imap imaplib

我正在尝试将电子邮件标记为在Gmail服务器上看不见。

我正在使用此命令:

res, data = mailbox.uid('STORE', uid, '-FLAGS', '(\Seen)')

一切顺利但是当我使用网络浏览器检查时,它仍然标记为已显示。 当我在这里检查标志时,我得到的是:

 b'46 (FLAGS (-FLAGS \\Seen))'

我在这个问题上看到了多个问题,但提出的解决方案都没有奏效。

请注意,我正在使用以下方式附加此电子邮件:

mailbox.append(db_email.folder, "-FLAGS \Seen", time.mktime(db_email.date.timetuple()), mail.as_bytes())

但是标志参数-FLAGS \Seen没有任何效果,因为当我没有传递flag参数时,它是相同的。

另外,我已经仔细检查了uid给定的邮件文件夹,并且它与相应的电子邮件匹配。

1 个答案:

答案 0 :(得分:2)

似乎你在APPEND上误解了一些标志。

通过执行APPEND folder (-FLAGS \Seen) ...,您实际上创建了一个带有两个标记的消息:标准\Seen标记和非标准-FLAGS标记。

要创建不带\ Seen标记的邮件,只需使用()作为APPEND的标记列表。

-FLAGS是STORE的子命令,说要从当前列表中删除这些标志。相反,+FLAGS将这些标志添加到当前列表中。普通FLAGS会覆盖当前列表。

此外,如果您确实删除了IMAP连接上的\Seen标志,则可能需要一段时间才能显示在GMail WebUI中。您可能需要刷新或切换文件夹才能获得要渲染的更改。

注意:你没有保护你的反斜杠。 \S不是合法的转义序列,因此将被传递,但您应该使用双反斜杠('\\Seen')或原始字符串(r'\Seen'