本文介绍了在EWS中访问共享*个人*日历的推荐方式是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用具有服务帐户凭据的Exchangelib来模拟单个EWS用户。我能够检索用户有权访问的日历列表,但此列表不包括与用户共享的个人日历。

示例:Jane有一个名为Calendar";的默认日历,他们与Bill共享此日历。简还有他们创建的第二个日历,并与比尔共享了名为&Quot;Interview&Quot;的日历。

当我列出Bill的日历时,我只能看到访问日历-未列出Jane的默认日历。

我正在迭代Account()对象的calendar.children

>>> ews_account = Account(
                primary_smtp_address=XXXXX,
                config=XXXXX,
                autodiscover=False,
                access_type=IMPERSONATION,
            )

>>> for calendar in ews_account.calendar.children:
>>>     print(calendar.name)
"Interviews"

有没有其他方法可以发现Jane与Bill共享了她的个人日历?

看起来需要a method将日历ID与Jane的电子邮件地址一起发送,以查看它是否与Bill共享,但我希望有一种方法可以列出所有这些内容,而无需事先知道日历ID和电子邮件地址。

这些个人日历是与&Quot;委派&级访问权限共享的,但我也尝试了与&Quot;可以编辑&q;访问权限共享。

推荐答案

我能够使用此基于堆栈溢出答案的代码以略有不同的方式解决问题。

首先我使用IMPERSONATION实例化基本帐户,然后使用GetFolder使用原始帐户的account上下文,并将mailbox设置为其他用户的电子邮件地址。

要实现此操作,您必须知道共享日历所有者的电子邮件地址,这并不理想。Glen Scales在评论中表示,你可以使用NavLinks直接在原始账户上查找这些共享日历,但我无法理解:EWS - Access All Shared Calendars

from exchangelib import (
    IMPERSONATION,
    Account,
    Configuration,
    Mailbox,
    folders
)
from exchangelib.fields import FieldPath
from exchangelib.items import ID_ONLY
from exchangelib.services import GetFolder

account = Account(
    primary_smtp_address="[email protected]",
    config=Configuration(
        server=...,
        credentials=...,
    ),
    autodiscover=True,
    access_type=IMPERSONATION,
)

shared_calendar = next(
    GetFolder(account=account).call(
        folders=[
            folders.DistinguishedFolderId(
                id=folders.Calendar.DISTINGUISHED_FOLDER_ID,
                mailbox=Mailbox(
                    email_address="[email protected]"
                ),
            )
        ],
        additional_fields={
            FieldPath(field=field)
            for field in account.calendar.supported_fields(
                version=account.version
            )
        },
        shape=ID_ONLY,
    )
)

这篇关于在EWS中访问共享*个人*日历的推荐方式是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 07:00