如何使用Python exchangelib v 4.5.1筛选“作者”或“发件人”?

2024-06-17 12:14:55 发布

您现在位置:Python中文网/ 问答频道 /正文

使用exchangelib类似django的语法,我可以成功地在消息的subject字段上筛选()

my_account.inbox.filter(subject__contains="foo")

但是我没有发现在senderauthor上使用filter()的方法(也没有例子)。由于author(例如)是一个带有name字段的Mailbox对象,因此我希望它或其上的某个变体能够工作:

my_account.inbox.filter(author__name="Foo")

但它失败了,错误如下:

exchangelib.fields.InvalidField: Unknown field path 'author__name' on folders 
[Messages(Root(<exchangelib.account.Account object at 0x0000020561F64308>, ....

sender__name__eqsender__email_address等变体的表现并不好

我还尝试了一个未装饰的sender。使用sender不会给出错误,但它似乎从不匹配任何内容(至少不匹配nameemail_address字段)

我错过了什么


1条回答
网友
1楼 · 发布于 2024-06-17 12:14:55

EWS中authorsender字段的过滤逻辑有点奇怪。在https://github.com/ecederstrand/exchangelib/issues/913有一个很长的解释。要带走的主要部分是:

  • 不能对sender的子字段进行筛选^无法在EWS中的筛选器表达式中引用{}和sender__email
  • sender__icontains过滤器在mailbox_type='OneOff'而不是mailbox_type='Mailbox'时按预期工作
  • 使用像.filter('from:"somedomain.com"')这样的AQS查询字符串对OneOff和邮箱类型都能正常工作

相关问题 更多 >