Exchangelib - Как сохранить самое последнее вложение из указанной c строки темы - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь прочитать и сохранить самые последние вложения электронной почты с указанием c темы электронной почты. Я знаю, как отфильтровать письмо по теме ИЛИ время получения. Но я не знаю, как совместить эти два запроса. Не могли бы вы сообщить мне, если у вас есть лучшая идея, чтобы решить эту проблему?

Я знаю только, как читать самые последние письма, используя это

for item in a.inbox.children:
    for e in item.all().order_by('-datetime_received')[:1]:
        for attachment in e.attachments:
             ...

Я знаю, как получить указанные c электронная почта темы:

for item in a.inbox.children.filter(subject = 'this is my subject line'):
    for attachment in item.attachments:
          ....

Как я могу получить самое последнее вложение электронной почты из указанной c строки темы?

Большое спасибо!

1 Ответ

0 голосов
/ 23 января 2020

Я не уверен, что вы подразумеваете под "самым последним вложением", но у вложений есть поле last_modified_time: https://github.com/ecederstrand/exchangelib/blob/a695bda1edd9a574532bd099fe0c19968a5c5be4/exchangelib/attachments.py#L42

Так что вы можете сделать что-то вроде:

last_modified_attachment = sorted(
    item.attachments, 
    key=lambda i: i.last_modified_time
)[-1]

Для каждого элемента в вашем поиске будет выбрано последнее измененное вложение. Но вы можете обнаружить, что все они были изменены почти одновременно, если last_modified_time означает время, когда вложение было создано в EWS.

Для вложений элементов (вложения типа ItemAttachment) вы могли бы также копайте в одно из полей даты и времени на attachment.item и сортируйте по одному из них.

...