我目前正在使用 Exchangelib 连接到 Office365 EWS。我当前的情况是我想访问我们 session 室的日历。当我在 Outlook 中单击“添加房间”选项时,他们的日历就会显示。当我将它们添加到日历 View 的“其他日历”部分时,它们也会出现。
当我尝试使用 session 室的电子邮件地址作为帐户,然后检查日历时,出现以下错误:
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# 中使用的解决方案,并遇到了这个线程:
EWS - Access All Shared Calendars
他们似乎有某种搜索过滤器,但我无法在 exchangelib
库中找到它。
然后我发现了另一个线程:
此人谈到了“其他日历”如何成为“日历”对象下的一个文件夹。但是,当我查询 account.calendar.get_folders()
时,我返回 0 个结果。
最佳答案
没有可用的默认日历文件夹
错误意味着 Exchangelib 无法在帐户的文件夹中找到默认日历文件夹。造成这种情况的原因可能有很多。您仍然可以在 Account.folders
中找到日历文件夹。
关于python - 在exchangelib中访问 "Other Calendars",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42596672/