目前我已經我們使用檢索了整整一天郵箱地址日曆(專門爲室聯繫郵箱)一些代碼:交易所EWS API - 從預約獲取CalendarEvent
var attendees = new List<AttendeeInfo> {
new AttendeeInfo {
SmtpAddress = emailAddress,
AttendeeType = MeetingAttendeeType.Room
}
};
var start = currentDate.Date.ToUniversalTime();
var results = this._Service.GetUserAvailability(attendees, new TimeWindow(start, start.AddHours(24)), AvailabilityData.FreeBusy);
var availability = results.AttendeesAvailability[0].CalendarEvents;
// Do some manipulation across the events…
這一切工作正常,我現在來到一個地步,我需要能夠加入會議到郵箱,使用下列內容:
var meeting = new Appointment(this._Service) {
Subject = subject,
Start = startDate,
End = endDate
};
if (null != roomToUse) {
meeting.Location = roomToUse.Name;
meeting.Resources.Add(roomToUse.EmailAddress);
}
var organiser = meeting.RequiredAttendees.Add(this._User);
// Save the meeting to the Calendar folder and send the meeting request.
meeting.Save(
new FolderId(WellKnownFolderName.Calendar, organiser.Address),
SendInvitationsMode.SendOnlyToAll
);
其中也工作得很好,但是我需要什麼現在要做的是獲得CalendarEvent
爲新的約會,返回相同的位信息的結構相同(因爲CalendarEvent
做了一些事情,例如將主題轉換爲[Organiser First Name] [Organiser Last Name] [Subject]
,我們在內部處理這些信息並將其分解爲名稱和主題。
我可以重複這一點的邏輯,但似乎有點不可靠,理想情況下,我只想重新使用同一類。
所以,我的下一個想法是重新獲取郵箱的可用性,並且其循環找到正確的CalendarEvent
,但我看不到可靠的方法來正確識別CalendarEvent
是一樣的一個我剛做出來的。我可以開始和結束日期/時間,檢查主題,但看起來有點脆弱。
新的會議確實有一個ID保存的反對,也是如此每個CalendarEvent
的CalendarEventDetails
,但是這兩個不匹配(轉換新的ID IdFormat.EwsId
到IdFormat.HexEntryId
之後),所以我假定這不是正確的方式去做。
有沒有更好的方法來實現這一目標?要麼從GetUserAvailability
切換到返回Appointment
s的東西,然而(自從我寫了那麼一小段代碼以來已經有一段時間了),我記得在給定的一天中獲得所有約會並不那麼簡單(但是更願意否則會被顯示)。