Четкое документированное чтение функций электронной почты с помощью 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
, чтобы получить список писем.
Ответ 4
Вы можете увидеть все живые объекты Outlook и их данные в OutlookSpy.
MailItem
свойства объекта, методы и события полностью документированы в https://msdn.microsoft.com/en-us/library/office/ff861332.aspx
Ответ 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