使用python API O365接收电子邮件

时间:2019-03-12 04:42:15

标签: python python-3.x office365 email-attachments

我刚刚开始使用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 个答案:

答案 0 :(得分:1)

从您的示例开始-尚不清楚您是否已通过身份验证...

如果这样,您将可以列出邮箱文件夹。在以下情况下-您可以访问收件箱,然后列出子文件夹:

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”的消息。如果找到消息,则会打印正文。

希望这会有所启发。