我目前正在使用 exchangelib 连接到 Office365 EWS。我目前的情况是我想访问我们会议室的日历。当我在 Outlook 中单击“添加房间”选项时,他们的日历就会显示出来。当我将它们添加到我的日历视图的“其他日历”部分时,它们也会出现。
当我尝试使用会议室的电子邮件地址作为帐户,然后检查日历时,我收到以下错误:
exchangelib.errors.ErrorFolderNotFound: No useable default Calendar folders
所以我想我应该只是通过我的登录名来访问日历;好像我正在查看 Outlook 中的“其他日历”部分。问题是我似乎无法弄清楚如何访问这些日历。我可以毫无问题地访问我自己的。
当我查看 EWS 的 C# 实现时,有一种搜索文件夹的方法,您可以在其中找到其他日历。我在 exchangelib 中没有看到类似的东西。
举个例子:
credentials = Credentials(username='My email address', password='My password')
config = Configuration(credentials=credentials, server='outlook.office365.com', has_ssl=True)
email = # My e-mail address (I also attempted with the room's e-mail address)
account = Account(primary_smtp_address=email, credentials=credentials,
autodiscover=False, config=config)
for f in account.folders:
print f
结果:
<class 'exchangelib.folders.Calendar'>
<class 'exchangelib.folders.Contacts'>
<class 'exchangelib.folders.Tasks'>
<class 'exchangelib.folders.Messages'>
<class 'exchangelib.folders.Folder'>
“日历”选项不能迭代,但“文件夹”选项可以。
for f in account.folders[Folder]:
print f
结果:
Folder (Conversation Action Settings)
Folder (Conversation History)
Folder (Files)
Folder (Journal)
Folder (Notes)
Folder (Quick Step Settings)
Folder (RSS Feeds)
Folder (Social Activity Notifications)
Folder (Yammer Root)
这些选项似乎都没有给我我正在寻找的东西。
任何帮助将不胜感激!
先感谢您
编辑
我发现了account.root.get_folders()
. 我现在可以看到一个非常大的文件夹列表。但是,我仍然看不到一个似乎可用于其他日历的日历。
我一直在阅读其他人在 C# 中使用的解决方案并遇到了这个线程:
他们似乎有某种搜索过滤器,但我无法在exchangelib
库中找到它。
然后我发现了另一个线程:
这一篇谈到了其他日历如何成为日历对象下的文件夹。但是,当我查询时account.calendar.get_folders()
返回 0 个结果。