Можно ли отсортировать все электронные письма в папке входящих сообщений Outlook от указанного отправителя c, используя python? - PullRequest
0 голосов
/ 24 апреля 2020

Мне нужно перебрать мою корпоративную учетную запись Outlook, и я хочу перебрать все мои электронные письма, отправленные на определенный адрес, и найти все ответы на это письмо. Насколько я понимаю, я могу использовать модуль win32com.client для доступа к своему внешнему виду и могу читать все «непрочитанные» электронные письма в папке. Однако я хочу изменить фильтр для чтения электронных писем в соответствии с указанным c отправителем. Я не могу найти полный список методов, которые могут быть вызваны в моем объекте сообщений. Вы можете указать отправителя?

Вот мой код:

import win32com.client

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

inbox = outlook.GetDefaultFolder(6) # "6" refers to the index of a folder - in this case,
                                    # the inbox. You can change that number to reference
                                    # any other folder
messages = inbox.Items
messages.Sort("[ReceivedTime]",True)

sender = 'xxxxx@xxxx.com'
for message in messages:
    if sender in message:
        print (message.body)

1 Ответ

1 голос
/ 24 апреля 2020

Перебор всех элементов в папке - не очень хорошая идея. Вместо этого вам нужно использовать Find / FindNext или Restrict класса Items класса в Outlook. Подробнее о них читайте в следующих статьях:

Например, вы можете использовать следующие критерии поиска:

outItems = Items.Restrict("[SenderEmailAddress] = " & "'" & address & "'")

Также вам может пригодиться метод AdvancedSearch класса Application. Ключевые преимущества использования метода AdvancedSearch в Outlook:

  • Поиск выполняется в другом потоке. Вам не нужно запускать другой поток вручную, поскольку метод AdvancedSearch запускает его автоматически в фоновом режиме.
  • Возможность поиска любых типов элементов: почта, встреча, календарь, заметки и т. Д. c. в любом месте, то есть за пределами определенной папки. Методы Restrict и Find / FindNext могут быть применены к определенной коллекции Items (см. Свойство Items класса Folder в Outlook).
  • Полная поддержка запросов DASL (пользовательские свойства можно использовать и для поиска). Подробнее об этом можно прочитать в статье Filtering в MSDN. Для повышения эффективности поиска можно использовать ключевые слова мгновенного поиска, если для магазина включен мгновенный поиск (см. Свойство IsInstantSearchEnabled класса Store).
  • Вы можете остановить процесс поиска в любой момент, используя Stop метод класса поиска.
...