我试图阅读一些信息从一堆电子邮件快速而不拉整个对象,并设置为已读邮件项目。尤其是这样,因为大多数电子邮件都有很大的附件,我不想拉他们。为此,我尝试以下方法:
mail_filter = acct.inbox.filter(message_id__in=email_id_list).values_list("subject", "body", "datetime_received", "sender")
mail_filter.page_size = 2
for item in mail_filter.iterator():
do_something_with_the_tuple_in_item()
# Now I want to set is_read = True. Something like below:
acct.inbox.filter(message_id__in=email_id_list).update(is_read=True)
虽然使用values\u list可以避免获取整个邮件项目(否则似乎会消耗大量内存,尤其是对于带有附件的电子邮件),但我发现过滤器上没有update()支持。因此,为了让我将电子邮件设置为“is\u read”,我需要拉取对象(以内存为代价)并设置为“is\u read=True”,然后将save()返回。基本上,它无法通过使用值列表来节省内存使用量。还有其他想法吗?我有什么遗漏吗
您可以告诉exchangelib只获取一些字段值,并且只更新
is_read
字段。另外,如果您只想处理未读电子邮件,可以在is_read
值上添加筛选器:要减少服务器上的负载,您可以批量更新您的项目:
相关问题 更多 >
编程相关推荐