目前我已经我们使用检索了整整一天邮箱地址日历(专门为室联系邮箱)一些代码:交易所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的东西,然而(自从我写了那么一小段代码以来已经有一段时间了),我记得在给定的一天中获得所有约会并不那么简单(但是更愿意否则会被显示)。