2010-03-10 5 views
9

In EWS Managed API ist es einfach, einen Termin für einen bestimmten Benutzer zu erstellen:Verwenden der EWS Managed API zum Erstellen von Terminen für andere Benutzer?

ExchangeService service = new ExchangeService(); 
service.Credentials = new NetworkCredentials ("administrator", "password", "domain"); 
service.AutodiscoverUrl(emailAddress); 

Appointment appointment = new Appointment(service); 
appointment.Subject = "Testing"; 
appointment.Start = DateTime.Now; 
appointment.End = appointment.Start.AddHours(1); 
appointment.Save(); 

Dies erzeugt einen Termin für den Administrator. Aber sage ich wollte eigentlich einen Termin für einen anderen Benutzer erstellen (diesen Benutzer nicht als Teilnehmer zu meinem Termin hinzufügen). Ist dies über die EWS Managed API möglich?

+1

@Alfred hilft. Können Sie mir sagen, wo die verdammte Managed API DLL installiert ist? Ich kann es nirgends auf meiner Maschine finden .... Vielen Dank. – brumScouse

+1

@brumScouse. Anstelle eines Kommentars sollten Sie eine neue Frage stellen. Wie auch immer, die Managed API DLL wird nicht mit Exchange Server installiert. Sie müssen es von Microsoft herunterladen und auf Ihrem Computer installieren. Ab diesem Datum kann die aktuellste Version unter http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c3342fb3-fbcc-4127-becf-872c746840e1 –

+0

@brumScouse gefunden werden Die DLL wird an einem ähnlichen Speicherort wie folgt gefunden: C: \ Programme \ Microsoft \ Exchange \ Web Services \ 2.2 –

Antwort

5

Habe ich es aus diesem Artikel heraus: http://msdn.microsoft.com/en-us/library/dd633680(EXCHG.80).aspx

Sie das service.ImpersonatedUserId Attribut verwenden soll.

+0

Jede Möglichkeit, die durch Delegierung erreicht werden kann. Ich weiß, dass wir Delegieren mit EWS-API erstellen und verwalten können, aber nicht wissen, ob es die Möglichkeit gibt, die Delegierung zum Erstellen von Terminen etc. zu verwenden. – Aamir

7
Folder inboxFolder = Folder.Bind(service, new FolderId(WellKnownFolderName.Inbox, "[email protected]")); 

Wird auch funktionieren. Übergeben Sie dann inboxFolder.id an den Appointment.Save-Aufruf. Die Updates und Löschungen benötigen dies nicht. Die beste Antwort ist die Verwendung von impersonate, aber dies setzt voraus, dass sie von den Serveradministratoren aktiviert wird. Wenn Sie keine solche Macht ausüben, können Sie mit dieser Methode tun, was Sie brauchen. Hinweis: Der Benutzer, der Ihre Anwendung ausführt, muss über Berechtigungen für das Zielkonto verfügen, da dies andernfalls fehlschlägt.

hier gefunden: http://msdn.microsoft.com/en-us/library/gg274408(v=EXCHG.80).aspx

+1

thanks! Das funktioniert, aber es muss ** WellKnownFolderName.Calendar ** anstelle von ** WellKnownFolderName.Inbox ** sein. – Ephedra

5

Ich weiß, das in Antwort beantwortet wurde aber auf @ Aamirs Kommentar Sie dies mit Delegierten tun kann ich es ich arbeite für ein Projekt gerade getan haben.

Wie @matt in seiner Antwort vorgeschlagen, können Sie die Speichermethode des Termins ändern, um auf den anderen Benutzerordner zu verweisen, der in diesem Fall Kalender wäre.

-Code aussehen würde, wie unten

Appointment appointment = new Appointment(service); 
appointment.Subject = "Testing"; 
appointment.Start = DateTime.Now; 
appointment.End = appointment.Start.AddHours(1); 
appointment.Save(new FolderId(WellKnownFolderName.Calendar, new Mailbox(_EmailAddress))); 

Hoffnung, die

Verwandte Themen