目前我已经使用了一些代码来检索邮箱地址的日历(特别是Room联系人的邮箱)一整天:
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
,但是我无法找到正确识别哪个{{1}的可靠方法和我刚刚制作的一样。我可以从开始和结束日期/时间开始,检查主题,但这看起来有点脆弱。
新会议确实保存了针对它的ID,每个CalendarEvent
上的CalendarEventDetails
也是如此(但在将新ID CalendarEvent
转换为IdFormat.EwsId
后)两者不匹配,所以我认为这不是正确的方法。
有没有更好的方法来实现这一目标?要么从IdFormat.HexEntryId
切换到返回GetUserAvailability
s的东西,然而(自从我编写那段代码以来已经有一段时间了)我记得要获得所有约会并不那么简单给定的一天(但非常乐意以其他方式展示)。
答案 0 :(得分:0)
新会议确实有一个Id保存,每个CalendarEvent上的CalendarEventDetails也是如此(但是在将新ID IdFormat.EwsId转换为IdFormat.HexEntryId之后)两者不匹配,所以我假设这不是正确的方法。
CalendarEventDetails中返回的EntryId是您查询过的邮箱中当前约会的ID。当你说不匹配时它没有意义(例如,如果你的Id存储可能已过期或指向不同的对象或邮箱,例如你从中获取的ID,它会从目标邮箱返回当前数据会议室邮箱与您需要使用会议GOID并在该实例中搜索的管理员邮箱中创建的约会不匹配。
有没有更好的方法来实现这一目标?无论是通过从GetUserAvailability切换到返回约会的东西,然而(自从我写了一些代码以来它已经有一段时间了)我记得在给定的一天获得所有约会并不那么简单(但是很高兴能够另有说明。)
无论您使用哪种操作查询完全相同的数据(例如,使用FindItems直接查询日历),您再次使用这一点对我来说没有逻辑意义。
哪个也工作正常,但我现在需要做的是获取新约会的CalendarEvent,以在同一结构中返回相同的信息(因为CalendarEvent做了一些事情,比如将主题转换为[Organizer First Name] ] [主办单位姓名] [主题],我们正在内部处理该名称和主题。
这不是EWS,这是会议室邮箱的一项功能,出于安全原因,它将使用管理器名称替换约会的主题。可以使用Set-CalendarProcessing -AddOrganizerToSubject https://technet.microsoft.com/en-us/library/dd335046(v=exchg.160).aspx
在会议邮箱上禁用此功能