Exchange Web服务(EWS):如何访问组织中的所有用户任务文件夹

时间:2017-07-26 12:42:59

标签: python outlook office365 exchangewebservices

我需要访问组织中所有O365用户的tasks文件夹。为此,我使用的是Exchanged Web服务(EWS)。我能够访问我自己的任务文件夹和与我共享的文件夹,但我需要访问所有这些文件夹。

我需要一种方法强制每个帐户与我分享他们的任务文件夹以完成我想要做的事情(我不能要求组织中的每个人自己做,这将是复杂的,因为那里约400名用户)。

是否有权限让我自己作为管理员来避免共享文件夹或我可以运行的脚本为我执行此任务?

到目前为止,这是我的代码:

from exchangelib import DELEGATE, IMPERSONATION, Account, Credentials, ServiceAccount, \
    EWSDateTime, EWSTimeZone, Configuration, NTLM, CalendarItem, Message, \
    Mailbox, Attendee, Q, ExtendedProperty, FileAttachment, ItemAttachment, \
    HTMLBody, Build, Version
import json

credentials = Credentials(username='admin@mycorp.local', password='password') 
config = Configuration(server='outlook.office365.com' , credentials=credentials)
account = Account(primary_smtp_address='userINeedToAccess@mycorp.local', credentials=credentials, config=config,
    autodiscover=False, access_type=DELEGATE)


all_tasks = []
json_tasks = []
for t in account.tasks.all():
    all_tasks.append(t)


for t in all_tasks:
    data = {"Action" : t.subject, "actualWork": t.actual_work, "Project": t.billing_information, "Status": t.status, "Owner": t.owner, "isComplete": t.is_complete}
    json_data = json.dumps(data)
    print(json_data)

print(account.tasks.total_count)

1 个答案:

答案 0 :(得分:1)

您需要收集所有电子邮件地址,并且您需要Exchange管理员从您正在连接的帐户中为这些帐户授予足够的权限。通常可以使用Exchange服务器上的管理命令使用PowerShell脚本来授予权限。