Четкое документированное чтение функций электронной почты с помощью python win32com outlook

Я пытаюсь лучше понять взаимодействие Outlook через win32com. Я не смог найти четкую документацию, которая позволяет мне использовать win32com для эффективного чтения электронных писем, из моего текущего расследования это похоже на довольно регулярные чувства пользователей. Таким образом, появляется следующая информация и запрос:

Может кто-нибудь,

1. Дайте ссылку на место четкой документации (если она существует)

2. Разверните ниже

Ниже приведена текущая функциональность, основанная на чтении кода других людей.

Возьмите приведенный ниже код:

import win32com

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

inbox=outlook.GetDefaultFolder(6)

messages=inbox.Items

for message in messages:
    attachments = message.attachments

    for attachment in attachments:
        pass

Объекты, используемые выше, имеют следующие функциональные возможности, о которых я знаю:

Входящие -

.Folders
.Items

сообщения -

.GetFirst()
.GetLast()
.GetNext()
.GetPrevious()
.Attachments

сообщение -

.Subject
.Body
.To
.Recipients
.Sender
.Sender.Address

вложения -

.item()
.Count

-

.filename

Если вы знаете больше функциональности, добавьте к этому в свои ответы.

Ответы

Ответ 1

Визуальная базовая ссылка для приложений - ваш друг. Попробуйте начать с этой ссылки...

Взаимодействие свойств Outlook Mailitem

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

  • message.CC
  • message.Importance
  • message.LastModificationTime

Ответ 2

Для всех интересующихся, как добраться до любой папки по умолчанию, а не просто "Входящие" здесь список:

3  Deleted Items
4  Outbox
5  Sent Items
6  Inbox
9  Calendar
10 Contacts
11 Journal
12 Notes
13 Tasks
14 Drafts

Есть больше (напоминания, ошибки синхронизации и т.д.); вы можете получить весь список с помощью этого кода (вдохновленный John Cook solution в папки):

import win32com
outlook=win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
for i in range(50):
    try:
        box = outlook.GetDefaultFolder(i)
        name = box.Name
        print(i, name)
    except:
        pass

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

Ответ 3

Я думал, что добавлю что-то и для навигации по папкам - все это вытекает из документации Microsoft выше, но может быть полезно здесь, особенно если вы пытаетесь перейти в любую папку в структуре папок Outlook, кроме Входящие.

Вы можете перемещаться по коллекции папок с помощью folders - отметить в этом случае, нет GetDefaultFolder после GetNamespace (иначе вы, скорее всего, попадете в папку "Входящие" ).

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace('MAPI')
folder = outlook.Folders[1]

Число - это индекс папки, к которой вы хотите получить доступ. Чтобы узнать, сколько там подпапок:

folder.Count

Если у вас есть другие подпапки, вы можете использовать еще один folders для более глубокого:

folder.Folders[2]

folders возвращает список подпапок, поэтому, чтобы получить имена всех папок в текущем каталоге, вы можете использовать быстрый цикл.

for i in range(folder.Count):
    print (folder[i].Name)

Каждая из подпапок имеет метод .Items, чтобы получить список писем.

Ответ 5

Для вложений https://docs.microsoft.com/en-us/office/vba/api/outlook.attachment (см. свойства)

attachment.FileName
attachment.Type
attachment.Position
attachment.BlockLevel
attachment.Class
attachment.DisplayName
attachment.Parent
attachment.Session
attachment.Size
attachment.Index
attachment.Application