我目前正在使用exchangelib连接到Office365 EWS。我目前的情况是,我想访问我们会议室的日历。当我单击Outlook中的"Add“选项时,它们的日历就会显示出来。当我将它们添加到日历视图的“其他日历”部分时,它们也会出现。
当我尝试使用会议室的电子邮件地址作为帐户,然后检查日历,我会得到以下错误:
exchangelib.errors.ErrorFolderNotFound: No useable default Calendar folders因此,我想我应该通过登录来访问日历,就好像我在查看Outlook中的其他日历部分一样。问题是,我似乎不知道如何访问这些日历。我可以在没有问题的情况下访问我自己。
当我查看EWS的C#实现时,有一种搜索文件夹的方法,您可以在那里找到其他日历。我在交易所里没看到这样的东西。
举一个例子:
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的结果。
发布于 2017-07-10 21:26:06
No useable default Calendar folders错误意味着exchangelib无法在帐户的文件夹中找到默认日历文件夹。这可能有几个原因。您可能仍然能够在Account.folders中找到日历文件夹。
发布于 2020-05-16 09:35:25
您可以通过查询account.calendar.children获得其他日历:
for cal_folder in account.calendar.children:
if -1 !=str(cal_folder).find('my_Calendar'):
myCalendar=cal_folder
break
for item in myCalendar.all():
print(item.subject)发布于 2021-03-02 21:01:12
为了添加一些上下文,以防这对其他人有所帮助,我们遇到了这样的情况:用户A可以访问用户B的收件箱,但不能访问用户B的日历。如果用户A被添加到用户B的日历共享中,问题就解决了。
https://stackoverflow.com/questions/42596672
复制相似问题