使用Python访问Outlook API

时间:2014-09-18 00:37:23

标签: python soap outlook

如何使用Python访问XML API以在Microsoft Office 365帐户中创建日历事件?

我在http://outlook.office365.com上有一个托管帐户,我正在尝试使用Python库https://github.com/linkedin/pyexchange(几乎逐字地使用sample code)创建日历事件,但Outlook拒绝我的带有错误的凭据“无法连接到Exchange:HTTP错误401:未经授权”

我正在使用端点https://outlook.office365.com/EWS/Exchange.asmx,其中包含我通常用于登录网络用户界面的用户名和密码。

在我可以从API访问帐户之前,是否需要专门设置或配置帐户?

2 个答案:

答案 0 :(得分:1)

对于用户名,office365通常会在office 365 2013版本上接受您的电子邮件。 2010年您的域名和用户名。

ceiling(lg(x))

这是我如何连接到office 2013 outlook api:

from pyexchange import Exchange2010Service, ExchangeNTLMAuthConnection

URL = u'https://outlook.office365.com/EWS/Exchange.asmx'
USERNAME = u'domain\\username' #here write full email address
PASSWORD = u"YOURPASS"

# Set up the connection to Exchange
connection = ExchangeNTLMAuthConnection(url=URL,
                                    username=USERNAME,
                                    password=PASSWORD)

service = Exchange2010Service(connection)

答案 1 :(得分:1)

您的前景可能不再使用NTLM身份验证。 (来源:hereherehere

在我们的帐户从本地迁移到O365之后,我不得不面对同样的问题,并且不得不使用另一个库来访问日历。我在这里使用了O365库:https://pypi.org/project/O365

按照docs创建一个注册并在Azure中对您的应用程序进行身份验证,那么您应该能够像以前一样使用以下示例代码访问日历:

from O365 import Account
from datetime import datetime
credentials = ('your_client_id', 'client_secret')

scopes = ['https://outlook.office365.com/Calendars.Read']
account = Account(credentials)

schedule = account.schedule()
calendar = schedule.get_default_calendar()

q = calendar.new_query('start').greater_equal(datetime(2019, 5, 20))
q.chain('and').on_attribute('end').less_equal(datetime(2019, 10, 24))

events = calendar.get_events(query=q, include_recurring=True)

for event in events:
    print(event.subject)