使用exchangelib类似django的语法,我可以成功地在消息的subject
字段上筛选()
my_account.inbox.filter(subject__contains="foo")
但是我没有发现在sender
或author
上使用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__eq
、sender__email_address
等变体的表现并不好
我还尝试了一个未装饰的sender
。使用sender
不会给出错误,但它似乎从不匹配任何内容(至少不匹配name
或email_address
字段)
我错过了什么
EWS中
author
和sender
字段的过滤逻辑有点奇怪。在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和邮箱类型都能正常工作相关问题 更多 >
编程相关推荐