簡體   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