[英]Get all user's data from Exchange Server 2010
我正在嘗試開發用於將日歷和聯系人同步到另一個系統的應用程序。 該應用程序是用C#編寫的,但是我不了解如何在不知道每個人的憑據的情況下獲取所有用戶的日歷和聯系人。 該應用程序不應該輪詢信息,而是像事件一樣將其發送到我的應用程序。
我已經在MS網站上進行搜索,下載了“ Exchange 2013 101代碼示例”,並且成功編寫了一個腳本,該腳本將電子郵件發送給另一個用戶,但是身份驗證僅適用於用戶憑據。
是否可以創建一個可以讀取給定用戶列表的所有日歷和聯系人的“主”用戶? ExchangeServer可以調用我的應用程序並發送信息(例如,使用SOAP),還是必須輪詢?
更新:
我創建了一個對所有內容都具有完全許可權的用戶,但我不知道如何從服務器讀取數據,因為“主”用戶的日歷為空。 當我訪問OWA並選擇假裝查看某人的日歷時,我可以看到約會。
權限代碼:
Get-Mailboxdatabase | Add-ADPermission -AccessRights ExtendedRight -ExtendedRights Receive-As, Send-As -User "<SuperAccount>"
而這個共享日歷:
Add-MailboxFolderPermission –Identity <MailboxFolderId>:\Calendar -AccessRight ReadItems -User <SuperAccount>
如何獲得我的主用戶的日歷?
我們使用的方法是所有用戶必須與具有完全編輯權限的“主”用戶共享他們的日歷。 必須在服務器的域中創建此用戶。 我們的代碼以該主用戶身份登錄到Exchange,然后它可以訪問所有日歷。
我沒有經驗的另一種方法是模擬 。 Exchange使您可以充當其他用戶。 為此,您必須具有在Windiows下的模擬權限。
根據Jan Doggen的回答,我在另一個StackOverflow線程中找到了解決方案,可以在這里找到: EWS:訪問共享日歷
Seph的答案是在Visual Basic中提供的,但可以輕松將其轉換為C#:
using Microsoft.Exchange.WebServices.Data;
DateTime startTime = new DateTime(2013, 1, 1);
DateTime endTime = new DateTime(2013, 12, 31);
var cal = new FolderId(WellKnownFolderName.Calendar, new Mailbox("other user's email"));
var calendarView = new CalendarView(startTime.Date, endTime.Date.AddDays(1));
foreach (var appointmentItem in service.FindAppointments(cal, calendarView))
{
Console.WriteLine(appointmentItem.Subject);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.