我正在尝试将电子邮件标记为在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
给定的邮件文件夹,并且它与相应的电子邮件匹配。
答案 0 :(得分:2)
似乎你在APPEND上误解了一些标志。
通过执行APPEND folder (-FLAGS \Seen) ...
,您实际上创建了一个带有两个标记的消息:标准\Seen
标记和非标准-FLAGS
标记。
要创建不带\ Seen标记的邮件,只需使用()
作为APPEND
的标记列表。
-FLAGS
是STORE的子命令,说要从当前列表中删除这些标志。相反,+FLAGS
将这些标志添加到当前列表中。普通FLAGS
会覆盖当前列表。
此外,如果您确实删除了IMAP连接上的\Seen
标志,则可能需要一段时间才能显示在GMail WebUI中。您可能需要刷新或切换文件夹才能获得要渲染的更改。
注意:你没有保护你的反斜杠。 \S
不是合法的转义序列,因此将被传递,但您应该使用双反斜杠('\\Seen'
)或原始字符串(r'\Seen'
)