使用REST API在Python中读取未打开的Office365邮件
我想知道怎么用Python(版本2.6)通过REST请求从Office365获取所有未读邮件的所有信息,包括邮件内容和附件。可是,当我使用带注释的页面值时,出现了urllib2.HTTPError: HTTP Error 400: Bad Request的错误,而使用不带注释的页面值却能正常工作。谢谢!
import urllib
import urllib2
#page = 'https://outlook.office365.com/ews/odata/Me/Inbox/Messages?$filter=IsRead'
page = 'https://outlook.office365.com/ews/odata/Me/Inbox/Messages'
username = "myusername"
password = "mypassword"
p = urllib2.HTTPPasswordMgrWithDefaultRealm()
p.add_password(realm='', uri=page, user=username, passwd=password)
handler = urllib2.HTTPBasicAuthHandler(p)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
response = urllib2.urlopen(page)
print(response.read())
1 个回答
2
你可以通过SOAP来使用EWS获取这些信息,但创建SOAP请求会比使用新的Office 365 REST API复杂,尤其是在Python中。
可以参考这个链接:http://msdn.microsoft.com/en-us/library/office/dn605901(v=office.15).aspx
所以,如果你想获取收件箱中所有未读邮件,你可以发出一个请求(这个请求没有经过测试):
GET https://outlook.office365.com/ews/odata/Me/Inbox/Messages?$filter=IsRead eq false HTTP/1.1
Accept: application/json;odata.metadata=full
如果你坚持使用传统的EWS,你可以使用FindItem操作。
http://msdn.microsoft.com/en-us/library/office/aa566107(v=exchg.150).aspx