Как вытащить и разобрать тело письма из outlook с python в pandas df? - PullRequest
1 голос
/ 04 марта 2020

Я пытаюсь вытащить тело письма из Outlook в pandas фрейм данных. Как разбить msg.Body на строки, которые я могу записать в csv и вставить в pandas?

Это то, что у меня есть (и я могу использовать это для печати на экране и скопируйте и вставьте в Excel для дополнительных манипуляций):

import win32com.client
import win32com

outlook = win32com.client.Dispatch('Outlook.Application').GetNameSpace('MAPI')
FedEx_Claims = outlook.GetDefaultFolder(6).Folders['FedExClaims']

for msg in FedEx_Claims.Items:
    body = msg.Body
    print(body)

Я пытался втиснуть тело в строку, но первоначальное тестирование не показало, что оно обрабатывалось как строка, потому что я не мог Фильтр включает только строки с «:» в них.

s_msg = str(body)
for line in s_msg:
    if ':' in line:
        print(s_msg, end='')

Любая помощь будет принята с благодарностью.

Примечание. В настоящее время я не могу получить доступ к IMAP, но я ' Я спрашиваю у меня, можно ли это изменить.

1 Ответ

0 голосов
/ 04 марта 2020

Используйте exchangelib в https://pypi.org/project/exchangelib/

from exchangelib import DELEGATE, Account, Credentials, Configuration

creds = Credentials(
    username='X', password='X'
)

config = Configuration(server='X.ca', credentials=creds)

account = Account(
    primary_smtp_address="X@gmail.com",
    autodiscover=False, 
    config=config,
    access_type=DELEGATE
)

for item in account.inbox.all().order_by('-datetime_received')[:1]:
    print(item.body)

Содержимое item.body будет в html, затем используйте pandas.read_html для чтения / структурирования содержимого

https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.read_html.html

...