получение писем с помощью Python API O365 - PullRequest
0 голосов
/ 12 марта 2019

Я только начинаю работать с Python и пытаюсь выполнить ручную задачу, которую, как я слышал, проще с Python. Моя компания использует Office 365 для своих электронных писем, и я хочу получить вложение электронной почты и сохранить его локально, чтобы сэкономить время. До сих пор выяснилось, как отправлять простые электронные письма, называть имена папок в моей учетной записи, но я не могу понять, как читать какие-либо конкретные электронные письма.

моя идея выглядит примерно так,

from O365 import Account, message,mailbox

credentials =  ('username', 'given password')

account = Account(credentials)
mailbox = account.mailbox()
mail_folder = mailbox.inbox_folder()
mail_folder = mailbox.get_folder(folder_name='Inbox')
print(mail_folder)
#_init__(*,parent= Inbox, con=None,**kwargs)
Message_body = message.body()
message.get_subject('email subject here!')
print(Message.body)

сейчас я теряюсь и пробую что-нибудь на странице документации O365, но модуль сообщений не имеет атрибута в соответствии с тем, как я его использую. Любое руководство будет высоко ценится

1 Ответ

1 голос
/ 03 апреля 2019

Из вашего примера - не ясно, аутентифицированы ли вы или нет ...

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

from O365 import Account, Connection,  MSGraphProtocol, Message, MailBox, oauth_authentication_flow

scopes=['basic', 'message_all']
credentials=(<secret>, <another secret>)
account = Account(credentials = credentials)

if not account.is_authenticated:  # will check if there is a token and has not expired
    account.authenticate(scopes=scopes)

account.connection.refresh_token()mailbox = account.mailbox()
inbox = mailbox.get_folder(folder_name='Inbox')
child_folders = inbox.get_folders(25)
for folder in child_folders:
    print(folder.name, folder.parent_id)

Эта часть позволит вам выводить список папок (а также сообщений).

Если я посмотрю на ваш код - похоже, вы пытаетесь сделать и то и другое?

Попробуйте сделать что-то вроде следующего, чтобы получить представление о подкачке через ваш почтовый ящик:

for message in inbox.get_messages(5):
    if message.subject == 'test':
        print(message.body)

Обратите внимание, что я перебираю первые 5 сообщений в папке входящих сообщений в поисках сообщения с темой 'test'. Если он находит сообщение - то печатает тело.

Надеюсь, это прольет немного света.

...