Freigeben über


Hinzufügen und Entfernen von Delegaten mithilfe der EWS in Exchange

Erfahren Sie, wie Sie mithilfe der verwalteten EWS-API oder EWS in Exchange Delegaten zu Benutzerpostfächern hinzufügen oder Stellvertretungen aus diesen entfernen.

Sie können die verwaltete EWS-API oder EWS verwenden, um Stellvertretungen zu ermöglichen, im Namen eines Postfachbesitzers zu handeln oder den Zugriff eines Delegaten auf ein Postfach zu entfernen. Benutzer, die als Stellvertretung hinzugefügt werden und über Berechtigungen verfügen, können Aufgaben im Namen des Postfachbesitzers ausführen. Sie können beispielsweise Besprechungseinladungen erstellen und senden, E-Mails senden und auf Besprechungsanfragen im Namen des Postfachbesitzers antworten.

Tabelle 1. EWS Managed API-Methoden und EWS-Vorgänge zum Hinzufügen und Entfernen von Delegaten

Aufgabe EWS Managed API-Methode EWS-Vorgang
Hinzufügen von Delegaten
ExchangeService.AddDelegates
AddDelegate
Entfernen von Delegaten
ExchangeService.RemoveDelegates
RemoveDelegate

Nachdem einem Delegaten Berechtigungen für einen Ordner erteilt wurden, kann er entsprechend seinen Stellvertretungsberechtigungen auf Elemente im Ordner und alle Unterordner reagieren. Berechtigungen für Delegaten gelten nur für Unterordner, die erstellt werden, nachdem der Delegatzugriff gewährt wurde. Informationen zum Aktualisieren von Ordnerberechtigungen für bereits vorhandene Ordner oder andere Ordner finden Sie unter Festlegen von Ordnerberechtigungen für einen anderen Benutzer mithilfe von EWS in Exchange.

Beachten Sie, dass Delegaten nur postfachfähigen Konten hinzugefügt werden können, einschließlich E-Mail-aktivierter Sicherheitsgruppen. Standardmäßig kann ein einzelner EWS-Delegatzugriffsaufruf auf maximal 255 verschiedene Postfächer zugreifen.

Hinzufügen von Delegaten mithilfe der verwalteten EWS-API

Sie können einem Postfach mithilfe der AddDelegates EWS Managed API-Methode Delegaten hinzufügen. In diesem Beispiel wird ein neues Kalender-, Kontakt- und E-Mail-DelegateUser-Objekt erstellt, und jeder Delegat erhält Editor-Berechtigungen für den jeweiligen Ordner. Sie können das Beispiel ändern, um einem der durch die DelegatePermissions-Eigenschaften angegebenen Ordner einen Delegaten hinzuzufügen, und Sie können die Berechtigungen auf jeden der Werte festlegen, die von der DelegateFolderPermissionLevel-Enumeration angegeben werden.

In diesem Beispiel wird davon ausgegangen, dass der Dienst ein gültiges ExchangeService-Objekt für den Postfachbesitzer ist und dass der Benutzer bei einem Exchange-Server authentifiziert wurde.

public static Collection<DelegateUserResponse> AddDelegates(ExchangeService service)
{
    // Create a list to hold the new delegates to add.
    List<DelegateUser> newDelegates = new System.Collections.Generic.List<DelegateUser>();
    // Create a new delegate that has editor access to the mailbox owner's Calendar folder.
    DelegateUser calendarDelegate = new DelegateUser("calendardelegate@contoso.com");
    calendarDelegate.Permissions.CalendarFolderPermissionLevel = DelegateFolderPermissionLevel.Editor;
    // Add the delegate to the list of new delegates.
    newDelegates.Add(calendarDelegate);
    // Create a new delegate that has editor access to the mailbox owner's Contacts folder.
    DelegateUser contactDelegate = new DelegateUser("contactdelegate@contoso.com");
    contactDelegate.Permissions.ContactsFolderPermissionLevel = DelegateFolderPermissionLevel.Editor;
    // Add the delegate to the list of new delegates.
    newDelegates.Add(contactDelegate);
            
    // Create a new delegate that has editor access to the mailbox owner's Inbox folder.
    DelegateUser emailDelegate = new DelegateUser("emaildelegate@contoso.com");
    emailDelegate.Permissions.InboxFolderPermissionLevel = DelegateFolderPermissionLevel.Editor;
    // Add the delegate to the list of new delegates.
    newDelegates.Add(emailDelegate);
    // Create a mailbox object that represents the mailbox owner.
    Mailbox mailbox = new Mailbox("primary@contoso.com");
    // Call the AddDelegates method to add the delegates to the target mailbox.
    Collection<DelegateUserResponse> response = service.AddDelegates(mailbox, MeetingRequestsDeliveryScope.DelegatesAndSendInformationToMe, newDelegates);
            
    foreach (DelegateUserResponse resp in response)
    {
        // Print out the result and the last eight characters of the item ID.
        Console.WriteLine("For delegate " + resp.DelegateUser.UserId.PrimarySmtpAddress.ToString());
        Console.WriteLine("Result: {0}", resp.Result);
        Console.WriteLine("Error Code: {0}", resp.ErrorCode);
        Console.WriteLine("ErrorMessage: {0}\r\n", resp.ErrorMessage);
        Console.WriteLine("\r\n");
    }
    return response;
}

Hinzufügen von Delegaten mithilfe von EWS

Im folgenden Codebeispiel wird gezeigt, wie Sie mithilfe des EWS-Vorgangs AddDelegate separate Kalender-, Kontakt- und E-Mail-Delegaten hinzufügen. Das zu ändernde Postfach wird vom Mailbox-Element angegeben, und die Berechtigungseinstellungen für jeden Delegaten sind im DelegateUser-Element enthalten. Jeder der Delegaten wurde Editor-Berechtigungen für seinen Zielordner erteilt.

Dies ist auch die XML-Anforderung, die die verwaltete EWS-API sendet, wenn Sie die AddDelegates-Methode zum Hinzufügen von Delegaten verwenden.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
               xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2007_SP1" />
  </soap:Header>
  <soap:Body>
    <m:AddDelegate>
      <m:Mailbox>
        <t:EmailAddress>primary@contoso.com</t:EmailAddress>
      </m:Mailbox>
      <m:DelegateUsers>
        <t:DelegateUser>
          <t:UserId>
            <t:PrimarySmtpAddress>calendardelegate@contoso.com</t:PrimarySmtpAddress>
          </t:UserId>
          <t:DelegatePermissions>
            <t:CalendarFolderPermissionLevel>Editor</t:CalendarFolderPermissionLevel>
            <t:TasksFolderPermissionLevel>None</t:TasksFolderPermissionLevel>
            <t:InboxFolderPermissionLevel>None</t:InboxFolderPermissionLevel>
            <t:ContactsFolderPermissionLevel>None</t:ContactsFolderPermissionLevel>
            <t:NotesFolderPermissionLevel>None</t:NotesFolderPermissionLevel>
            <t:JournalFolderPermissionLevel>None</t:JournalFolderPermissionLevel>
          </t:DelegatePermissions>
          <t:ReceiveCopiesOfMeetingMessages>false</t:ReceiveCopiesOfMeetingMessages>
          <t:ViewPrivateItems>false</t:ViewPrivateItems>
        </t:DelegateUser>
        <t:DelegateUser>
          <t:UserId>
            <t:PrimarySmtpAddress>contactdelegate@contoso.com</t:PrimarySmtpAddress>
          </t:UserId>
          <t:DelegatePermissions>
            <t:CalendarFolderPermissionLevel>None</t:CalendarFolderPermissionLevel>
            <t:TasksFolderPermissionLevel>None</t:TasksFolderPermissionLevel>
            <t:InboxFolderPermissionLevel>None</t:InboxFolderPermissionLevel>
            <t:ContactsFolderPermissionLevel>Editor</t:ContactsFolderPermissionLevel>
            <t:NotesFolderPermissionLevel>None</t:NotesFolderPermissionLevel>
            <t:JournalFolderPermissionLevel>None</t:JournalFolderPermissionLevel>
          </t:DelegatePermissions>
          <t:ReceiveCopiesOfMeetingMessages>false</t:ReceiveCopiesOfMeetingMessages>
          <t:ViewPrivateItems>false</t:ViewPrivateItems>
        </t:DelegateUser>
        <t:DelegateUser>
          <t:UserId>
            <t:PrimarySmtpAddress>emaildelegate@contoso.com</t:PrimarySmtpAddress>
          </t:UserId>
          <t:DelegatePermissions>
            <t:CalendarFolderPermissionLevel>None</t:CalendarFolderPermissionLevel>
            <t:TasksFolderPermissionLevel>None</t:TasksFolderPermissionLevel>
            <t:InboxFolderPermissionLevel>Editor</t:InboxFolderPermissionLevel>
            <t:ContactsFolderPermissionLevel>None</t:ContactsFolderPermissionLevel>
            <t:NotesFolderPermissionLevel>None</t:NotesFolderPermissionLevel>
            <t:JournalFolderPermissionLevel>None</t:JournalFolderPermissionLevel>
          </t:DelegatePermissions>
          <t:ReceiveCopiesOfMeetingMessages>false</t:ReceiveCopiesOfMeetingMessages>
          <t:ViewPrivateItems>false</t:ViewPrivateItems>
        </t:DelegateUser>
      </m:DelegateUsers>
      <m:DeliverMeetingRequests>DelegatesAndSendInformationToMe</m:DeliverMeetingRequests>
    </m:AddDelegate>
  </soap:Body>
</soap:Envelope>

Der Server antwortet auf die AddDelegate-Anforderung mit einer AddDelegateResponse-Nachricht , die den ResponseCode-ElementwertNoError enthält, der angibt, dass die Delegaten erfolgreich erstellt wurden.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15"
                         MinorVersion="0"
                         MajorBuildNumber="888"
                         MinorBuildNumber="9"
                         Version="V2_10"
                         xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
                         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <m:AddDelegateResponse ResponseClass="Success"
                           xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
                           xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseCode>NoError</m:ResponseCode>
      <m:ResponseMessages>
        <m:DelegateUserResponseMessageType ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:DelegateUser>
            <t:UserId>
              <t:SID>S-1-5-21-1337771579-694202782-848329751-1535221</t:SID>
              <t:PrimarySmtpAddress>calendardelegate@contoso.com</t:PrimarySmtpAddress>
              <t:DisplayName>calendardelegate</t:DisplayName>
            </t:UserId>
            <t:ReceiveCopiesOfMeetingMessages>false</t:ReceiveCopiesOfMeetingMessages>
            <t:ViewPrivateItems>false</t:ViewPrivateItems>
          </m:DelegateUser>
        </m:DelegateUserResponseMessageType>
        <m:DelegateUserResponseMessageType ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:DelegateUser>
            <t:UserId>
              <t:SID>S-1-5-21-1337771579-694202782-848329751-1535264</t:SID>
              <t:PrimarySmtpAddress>contactdelegate@contoso.com</t:PrimarySmtpAddress>
              <t:DisplayName>contactdelegate</t:DisplayName>
            </t:UserId>
            <t:ReceiveCopiesOfMeetingMessages>false</t:ReceiveCopiesOfMeetingMessages>
            <t:ViewPrivateItems>false</t:ViewPrivateItems>
          </m:DelegateUser>
        </m:DelegateUserResponseMessageType>
        <m:DelegateUserResponseMessageType ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:DelegateUser>
            <t:UserId>
              <t:SID>S-1-5-21-1337771579-694202782-848329751-1535223</t:SID>
              <t:PrimarySmtpAddress>emaildelegate@contoso.com</t:PrimarySmtpAddress>
              <t:DisplayName>emaildelegate</t:DisplayName>
            </t:UserId>
            <t:ReceiveCopiesOfMeetingMessages>false</t:ReceiveCopiesOfMeetingMessages>
            <t:ViewPrivateItems>false</t:ViewPrivateItems>
          </m:DelegateUser>
        </m:DelegateUserResponseMessageType>
      </m:ResponseMessages>
    </m:AddDelegateResponse>
  </s:Body>
</s:Envelope>

Entfernen von Delegaten mithilfe der verwalteten EWS-API

Sie können Delegaten aus einem Zielpostfach entfernen, indem Sie die ExchangeService.RemoveDelegates EWS Managed API-Methode verwenden. In diesem Beispiel werden die im Beispiel zum Hinzufügen eines Delegaten festgelegten Delegatberechtigungen entfernt.

In diesem Beispiel wird davon ausgegangen, dass der Dienst ein gültiges ExchangeService-Objekt für den Postfachbesitzer ist und dass der Benutzer bei einem Exchange-Server authentifiziert wurde.

public static Collection<DelegateUserResponse> RemoveDelegates(ExchangeService service)
{
    // Create a list to hold the delegates to delete.
    List<UserId> deletedDelegates = new System.Collections.Generic.List<UserId>();
    // Add the delegate to the list of new delegates.
    deletedDelegates.Add("calendardelegate@contoso.com");
    // Add the delegate to the list of new delegates.
    deletedDelegates.Add("contactdelegate@contoso.com");
    // Add the delegate to the list of new delegates.
    deletedDelegates.Add("emaildelegate@contoso.com");
    // Create a mailbox object that represents the mailbox owner.
    Mailbox mailbox = new Mailbox("primary@contoso.com");
    // Call the AddDelegates method to add the delegates to the target mailbox.
    Collection<DelegateUserResponse> response = service.RemoveDelegates(mailbox, deletedDelegates);
    foreach (DelegateUserResponse resp in response)
    {
        // Print out the result and the last eight characters of the item ID.
        Console.WriteLine("Result: {0}", resp.Result);
        Console.WriteLine("Error Code: {0}", resp.ErrorCode);
        Console.WriteLine("ErrorMessage: {0}\r\n", resp.ErrorMessage);
    }
    return response;
}

Entfernen von Delegaten mithilfe von EWS

Sie können Delegaten aus einem Postfach entfernen, indem Sie den EWS-Vorgang EntfernenDelegate verwenden. In diesem Beispiel werden die im Beispiel zum Hinzufügen eines Delegaten festgelegten Delegatberechtigungen entfernt.

Dies ist auch die XML-Anforderung, die die verwaltete EWS-API sendet, wenn Sie die RemoveDelegates-Methode verwenden, um Delegaten zu entfernen.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
               xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2007_SP1" />
  </soap:Header>
  <soap:Body>
    <m:RemoveDelegate>
      <m:Mailbox>
        <t:EmailAddress>primary@contoso.com</t:EmailAddress>
      </m:Mailbox>
      <m:UserIds>
        <t:UserId>
          <t:PrimarySmtpAddress>calendardelegate@contoso.com</t:PrimarySmtpAddress>
        </t:UserId>
        <t:UserId>
          <t:PrimarySmtpAddress>contactdelegate@contoso.com</t:PrimarySmtpAddress>
        </t:UserId>
        <t:UserId>
          <t:PrimarySmtpAddress>emaildelegate@contoso.com</t:PrimarySmtpAddress>
        </t:UserId>
      </m:UserIds>
    </m:RemoveDelegate>
  </soap:Body>
</soap:Envelope>

Der Server antwortet auf die RemoveDelegate-Anforderung mit einer AddDelegateResponse-Nachricht , die den ResponseCode-ElementwertNoError enthält, der angibt, dass die Delegaten erfolgreich entfernt wurden.

Nächste Schritte

Nachdem Sie Stellvertretungen zu Kalender-, E-Mail- und Aufgabenordnern hinzugefügt haben, kann der Delegat auf die Elemente in den Ordnern zugreifen. Weitere Informationen finden Sie in den folgenden Artikeln:

Wenn die Ordner, für die Sie Delegaten hinzugefügt haben, untergeordnete Ordner enthalten, die erstellt wurden, bevor Sie dem Delegat Zugriff gewährt haben, kann der Delegat nicht ohne zusätzliche Berechtigungen auf diese Ordner zugreifen. Informationen zum Hinzufügen dieser Berechtigungen oder Zum Ändern von Berechtigungen für andere Ordner finden Sie unter Festlegen von Ordnerberechtigungen für einen anderen Benutzer mithilfe von EWS in Exchange.

Siehe auch