2010-03-10 25 views
9

Trong EWS API quản lý là nó dễ dàng để tạo một cuộc hẹn cho một người dùng cụ thể:Sử dụng API được quản lý EWS để tạo cuộc hẹn cho người dùng khác?

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(); 

này sẽ tạo ra một cuộc hẹn cho người quản trị. Nhưng nói rằng tôi muốn thực sự tạo cuộc hẹn cho một người dùng khác (không thêm người dùng đó làm người tham dự cuộc hẹn với tôi). Điều này có thể thực hiện được thông qua API được quản lý EWS không?

+1

@Alfred. Bạn có thể cho tôi biết nơi cài đặt DLL API được quản lý cục bộ. Tôi không thể tìm thấy nó ở bất cứ đâu trên máy của tôi .... Rất cám ơn. – brumScouse

+1

@brumScouse. Thay vì nhận xét, bạn nên đăng câu hỏi mới. Dù sao, DLL Managed API không được cài đặt với Exchange Server. Bạn phải tải xuống từ Microsoft và cài đặt trên máy tính của mình. Kể từ ngày này, phiên bản mới nhất có thể được tìm thấy tại http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c3342fb3-fbcc-4127-becf-872c746840e1 –

+0

@brumScouse sau khi làm theo hướng dẫn của Alfred DLL sẽ được tìm thấy tại một vị trí tương tự như sau: C: \ Program Files \ Microsoft \ Exchange \ Web Services \ 2.2 –

Trả lời

5

I figured it out từ bài viết này: http://msdn.microsoft.com/en-us/library/dd633680(EXCHG.80).aspx

Bạn nên sử dụng thuộc tính service.ImpersonatedUserId.

+0

Bất kỳ cơ hội nào có thể thực hiện bằng cách sử dụng tính năng ủy quyền. Tôi biết rằng chúng tôi có thể tạo và quản lý đại biểu sử dụng API EWS, nhưng không biết liệu có cách nào để sử dụng ủy quyền để tạo cuộc hẹn, v.v. – Aamir

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

Sẽ hoạt động. Sau đó, chuyển hộp thư đếnFolder.id đến cuộc gọi Cuộc hẹn. Các cập nhật và xóa không cần điều này. Câu trả lời hay nhất là sử dụng mạo danh, nhưng điều này yêu cầu nó phải được kích hoạt bởi quản trị viên máy chủ. Nếu bạn không sử dụng sức mạnh như vậy, phương pháp này sẽ cho phép bạn làm những gì bạn cần. Lưu ý: người dùng đang chạy ứng dụng của bạn phải có quyền trên tài khoản đích hoặc điều này sẽ không thành công (vì nó nên).

Tìm thấy ở đây: http://msdn.microsoft.com/en-us/library/gg274408(v=EXCHG.80).aspx

+1

cảm ơn! Điều đó hoạt động, nhưng nó phải là ** WellKnownFolderName.Calendar ** thay vì ** WellKnownFolderName.Inbox **. – Ephedra

5

Tôi biết điều này đã được trả lời nhưng trong câu trả lời cho @ bình luận Aamir của bạn có thể làm điều này bằng các đại biểu Tôi vừa mới thực hiện nó cho một dự án tôi đang làm việc trên.

Khi @matt đề xuất trong câu trả lời của mình, bạn có thể sửa đổi phương thức lưu của cuộc hẹn để trỏ tới thư mục người dùng khác trong trường hợp này sẽ là Lịch.

Mã sẽ trông như sau

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))); 

Hy vọng rằng sẽ giúp

Các vấn đề liên quan