2016-12-12 50 views
0

目前我已經我們使用檢索了整整一天郵箱地址日曆(專門爲室聯繫郵箱)一些代碼:交易所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保存的反對,也是如此每個CalendarEventCalendarEventDetails,但是這兩個不匹配(轉換新的ID IdFormat.EwsIdIdFormat.HexEntryId之後),所以我假定這不是正確的方式去做。

有沒有更好的方法來實現這一目標?要麼從GetUserAvailability切換到返回Appointment s的東西,然而(自從我寫了那麼一小段代碼以來已經有一段時間了),我記得在給定的一天中獲得所有約會並不那麼簡單(但是更願意否則會被顯示)。

回答

0

新的會議確實有保存反對的標識,也是如此但是每個CalendarEvent的CalendarEventDetails,兩者不匹配(轉換新的ID IdFormat.EwsId到IdFormat.HexEntryId後)所以我認爲這不是正確的方法。

的ENTRYID是在CalendarEventDetails返回是你查詢的郵箱當前預約的ID。當你說不匹配時,它是沒有意義的(例如,如果你有一個可能已過時的ID或指向不同的對象或郵箱,例如它從目標郵箱返回當前數據,例如你從會議室郵箱將與在Organizer郵箱中創建的約會不匹配,您需要使用會議GOID並在該實例中進行搜索)。

有沒有更好的方法來實現這個目標?無論是通過從GetUserAvailability切換到返回Appointments的東西,但是(自從我寫了那麼一小段代碼以來已經有一段時間了),我記得在給定的一天中獲得所有約會並不那麼簡單(但是更樂意成爲否則顯示)。

你的查詢完全相同的在運行數據,無論(例如,使用FindItems查詢日曆直接地)使用,從而再次這樣做沒有邏輯意義的我。

其中也工作得很好,但是我現在需要做的就是讓CalendarEvent新任命,在相同的結構相同的信息位返回(因爲CalendarEvent確實喜歡打開問題的一些事情到

是什麼並不EWS這個[主辦名字] [主辦姓氏] [主題],這是我們在網絡內部處理打破回到外面的名字和主題。是會議的一個特點房間郵箱將用secu的組織者名稱替換約會的主題實際的原因。這可以在會議郵箱上使用Set-CalendarProcessing禁用 - AddOrganizerToSubject https://technet.microsoft.com/en-us/library/dd335046(v=exchg.160).aspx