簡體   English   中英

使用exchangelib過濾帳戶中所有文件夾中的消息

[英]Filter messages from ALL folders in an account with exchangelib

我正在嘗試使用exchangelib從與特定主題匹配\\開始的帳戶中檢索消息。 這必須包括來自所有文件夾的消息,而不僅僅是“收件箱”文件夾。 我在這里遇到了幾個類似的問題

如何使用exchangelib從所有文件夾中獲取最新電子郵件?

這導致我使用FolderCollection。 但是,我不清楚如何創建所有文件夾的列表並將其傳遞給'folders'參數。

目前,我嘗試了以下方法:

conf = Configuration(server=ex_srv, credentials=cred)
acct = Account(primary_smtp_address=email, 
                            config=conf, 
                            autodiscover=False, 
                            credentials=cred, 
                            access_type=IMPERSONATION
                        )

from exchangelib.folders import Messages, FolderCollection
all_folder_list = acct.folders[Messages]
all_folder_collection = FolderCollection(account=acct, folders=all_folder_list)

all_folder_collection.filter(subject__startswith='test')

我似乎在這里犯了一個愚蠢的錯誤,但無法解決它。

有人可以讓我知道實現此用例的最佳方法嗎?

編輯:

我看到的錯誤是

Traceback (most recent call last):

  File "queryset.py", line 298, in __iter__
    for val in self._format_items(items=self._query(), return_format=self.return_format):
  File "queryset.py", line 375, in _item_yielder
    for i in iterable:
  File "account.py", line 580, in fetch
    shape=ID_ONLY,
  File "account.py", line 302, in _consume_item_service
    is_empty, items = peek(items)
  File "util.py", line 118, in peek
    first = next(iterable)
  File "folders.py", line 250, in find_items
    for i in items:
  File "services.py", line 432, in _paged_call
    parsed_pages = [self._get_page(message) for message in response]
  File "services.py", line 432, in <listcomp>
    parsed_pages = [self._get_page(message) for message in response]
  File "services.py", line 481, in _get_page
    rootfolder = self._get_element_container(message=message, name='{%s}RootFolder' % MNS)
  File "services.py", line 345, in _get_element_container
    raise self._get_exception(code=response_code, text=msg_text, msg_xml=msg_xml)
exchangelib.errors.ErrorInvalidOperation: Shared folder search cannot be performed on multiple folders.

問題是您的FolderCollection包含多個共享文件夾。 EWS不允許一次查詢多個共享文件夾。 如果不需要搜索共享文件夾,則必須從搜索中排除它們,或者一次搜索一個共享文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM