将电子邮件标记为已读 python

Nat*_*lan 2 python exchange-server exchangelib

我想将一封电子邮件标记为从我的 python 代码中读取的。我在用着

from exchangelib import Credentials, Account
my_account = Account(...)
credentials = Credentials(...)
Run Code Online (Sandbox Code Playgroud)

访问该帐户。这部分效果很好。然后我使用这个进入我想要的文件夹

var1 = my_account.root / 'branch1' / 'desiredFolder'
Run Code Online (Sandbox Code Playgroud)

再说一次,这效果很好。这就是将其标记为已读似乎不起作用的地方。

item = var1.filter(is_read=False).values('body')
for i, body in enumerate(item):
   #Code doing stuff
   var1.filter(is_read=False)[i].is_read = True
   var1.filter(is_read=False)[i].save(updated_fields=['is_read'])
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这篇文章Mark email as read with Exchangelib中的提示和答案,但电子邮件仍然显示为未读。我究竟做错了什么?

小智 5

save()我认为你没有工作的最后一行代码,因为你认为在将元素设置为is_read之后,这当然不会再次出现,所以你实际上没有保存它。 我认为这会起作用。unread[i]Trueunread[i]var1.filter(is_read=False)[i]

for msg in my_account.inbox.filter(is_read=False):
    msg.is_read = True
    msg.save(updated_fields=['is_read'])
Run Code Online (Sandbox Code Playgroud)