Как читать электронные письма Outlook из определенной папки Outlook

#python #python-3.x #outlook

#питон #python-3.x #перспективы

Вопрос:

Я пытаюсь прочитать все электронные письма Outlook из определенной папки Outlook, и мой текущий код делает это, используя номер по умолчанию, присвоенный каждой папке в Outlook. Например, я узнал, что «6» означает «Входящие», а «16» означает «Черновики», и я использую 16 здесь, чтобы зациклить все электронные письма в моей папке черновиков.

 outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(16)
messages = inbox.Items
 

Но я хочу изменить свою исходную папку. Я хочу создать новую папку в моем Outlook и использовать ее в качестве исходной папки. Однако я не могу сказать, какой номер по умолчанию для новой папки, которую я создал, а это значит, что я не знаю, какой номер должен быть указан в Outlook.GetDefaultFolder() для использования новой папки. Есть ли какой-нибудь способ проверить номер новой папки по умолчанию в Outlook? Или я могу использовать имя папки вместо номера?

Я был бы признателен за любую помощь.

Ответ №1:

Если вы знаете, что папка находится в хранилище по умолчанию, вы можете выполнить детализацию, начиная с корневой папки:

 folder = outlook.DefaultStore.GetRootFolder().Folders.Item("Inbox").Folders.Item("Inbox subfolder")
 

Если папка находится в хранилище, отличном от хранилища по умолчанию, сначала вам нужно найти хранилище по имени:

 folder = outlook.Stores.Item("otheruser@domain.demo").GetRootFolder().Folders.Item("Inbox").Folders.Item("Inbox subfolder")
 

Ответ №2:

Вы можете использовать модуль glob

Вы можете выполнять поиск, сопоставлять и развертывать шаблоны

 import glob
print(glob.glob("/home/adam/*.txt"))
 

и получите список типов файлов, которые вы ищете:

 ['/home/adam/file234.txt', '/home/adam/file235.txt', '/home/adam/file236.txt', .... ]