Я пытаюсь использовать win32com.client для печати основного сообщения электронной почты Outlook, но не могу понять это. Если бы кто-нибудь мог помочь, это было бы потрясающе

#python #win32com

Вопрос:

 import win32com.client
import os
Outlook = win32com.client.Dispatch("Outlook.Application")
olNs = Outlook.GetNamespace("MAPI")
Inbox = olNs.GetDefaultFolder(6)

Filter = "[Subject] = 'John Doe Test Results'"

Items = Inbox.Items.Restrict(Filter)
Item = Items.GetFirst()
messages = Inbox.Items
print(type(messages))
for attachment in Item.Attachments:
    print(attachment.FileName)
    attachment.SaveAsFile(os.path.join(r"C:UsersConradDesktoptestNew folder"   attachment.FileName))
 

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

Ответ №1:

Вы можете просмотреть сообщения и распечатать текст каждого сообщения:

 import win32com.client
import os
Outlook = win32com.client.Dispatch("Outlook.Application")
olNs = Outlook.GetNamespace("MAPI")
Inbox = olNs.GetDefaultFolder(6)

Filter = "[Subject] = 'John Doe Test Results'"

Items = Inbox.Items.Restrict(Filter)
Item = Items.GetFirst()
messages = Inbox.Items
#NEW CODE
for message in messages:
    print(message.body)

print(type(messages))
for attachment in Item.Attachments:
    print(attachment.FileName)
    attachment.SaveAsFile(os.path.join(r"C:UsersConradDesktoptestNew folder"   attachment.FileName))
 

Комментарии:

1. большое спасибо! единственное, что фильтр не применяется к сообщениям, поэтому он печатает все электронные письма, а не те, которые имеют только указанную тему

2. для сообщения в сообщениях: если сообщение.тема == «Результаты теста Джона Доу»: печать(сообщение.текст)