繁体   English   中英

Exchange EWS API-从约会获取CalendarEvent

[英]Exchange EWS API - Get CalendarEvent from Appointment

目前,我有一些代码可用于检索整天邮箱地址(特别是会议室联系人的邮箱)的日历:

        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与我刚创建的CalendarEvent相同。 。 我可以取消开始日期和结束日期/时间,对照该主题进行检查,但这似乎有些脆弱。

新会议确实保存了一个ID,每个CalendarEvent上的CalendarEventDetails也保存了,但是(在将新的ID IdFormat.EwsId转换为IdFormat.HexEntryId ),这两个会议不匹配,所以我认为这不是正确的解决方法。

有没有更好的方法来实现这一目标? 但是,要么从GetUserAvailability切换到返回Appointment的东西,要么(因为我写了这段代码已经有一段时间了),我记得要获得给定日期的所有约会并不是那么简单(但很高兴能够否则显示)。

新会议确实保存了一个ID,每个CalendarEvent上的CalendarEventDetails也保存了,但是(在将新的ID IdFormat.EwsId转换为IdFormat.HexEntryId之后),这两个会议不匹配,因此我认为这不是正确的解决方法。

CalendarEventDetails中返回的EntryId是您查询的邮箱中当前约会的ID。 当您说不匹配时,这是没有意义的(例如,如果您存储的ID已过期或引用了不同的对象或邮箱(例如,您从ID中获得的ID),它将从目标邮箱返回当前数据会议室邮箱与在组织者邮箱中创建的约会不匹配,您需要使用会议GOID并在该实例中进行搜索)。

有没有更好的方法来实现这一目标? 但是,要么从GetUserAvailability切换到返回约会的内容,要么(因为我写了这段代码已经有一段时间了),我记得要获得给定一天的所有约会并不是那么简单(但很高兴能做到)否则显示)。

无论您使用哪种操作(例如,使用FindItems直接查询日历),都可以查询完全相同的数据,所以对我而言这又没有逻辑意义。

这也可以正常工作,但是我现在要做的是获取新约会的CalendarEvent,以相同的结构返回相同的信息位(因为CalendarEvent做一些事情,例如将主题转换为[Organiser First Name] [Organiser [姓氏] [主题],我们正在内部处理,以分解为名称和主题。

这不是EWS,而是会议室邮箱的一项功能,出于安全原因,该会议室邮箱将用组织者名称替换约会的主题。 可以使用Set-CalendarProcessing -AddOrganizerToSubject https://technet.microsoft.com/zh-cn/library/dd335046(v=exchg.160).aspx在会议邮箱上禁用此功能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM