2012-11-26 107 views
2

我试图获取作为预约所需参与者的房间的ResponseType时出现问题。我可以确认我的Exchange 2010 sp2 ru4服务器即时批准或拒绝会议,但是当我通过ExchangeManaged api编程发现约会时,所需的与会者始终会为ResponseType返回“未知”值。Attendee.ResponseType未知 - Exchange托管API

这里是我的代码...

public bool IsAppointmentVerifiedWithResource(Patron userSessionObj, Reservation reservation) 
    { 
     var emailConfig = new DataStoreManager.ConfigurationManager(); 
     var serviceBinding = emailConfig.GetConfiguration(Configuration.GetConfigurationName(Resource_ConfigurationConstants.ExchangeServiceBinding)); 

     // Create the binding. 
     var service = new ExchangeService(ExchangeVersion.Exchange2010_SP2) 
     { 
      UseDefaultCredentials = true, 
      Url = new Uri(serviceBinding) 
     }; 

     // Set the calendar view to use 
     var view = new CalendarView(reservation.Start, reservation.End); 

     // Get the target folder ID using the email address 
     var folder = new FolderId(WellKnownFolderName.Calendar, new Mailbox(reservation.EmailAddress)); 

     view.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties); 

     if (CheckForApptCount(service, folder, view)) 
     { 
      var response = service.FindAppointments(folder, view); 

      service.LoadPropertiesForItems(from Item item in response select item, BasePropertySet.FirstClassProperties); 

      foreach (Appointment apt in response.Items) 
      { 
       foreach(Attendee at in apt.RequiredAttendees) 
       { 
        //room mailbox matches required attendee 
        if(at.Address == reservation.EmailAddress) 
        { 
         ******at.ResponseType always = Unknown****** 
         if(at.ResponseType == MeetingResponseType.Accept) 
         { 
          return true; 
         } 
        } 
       } 
      } 

     } 

     return false; 

    } 

如何获得的responseType财产同步和加载任何想法?

谢谢, 克里斯

******************* UPDATE - 寻找主办单位任命************** *****

public List<Appointment> RetrieveExistingReservations(DateTime selectedDate) 
      { 
       var service = new ExchangeService() 
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "[email protected]");     

using (WindowsIdentity.Impersonate(service.ImpersonatedUserId)) 
       { 
        return EwsWrapper.GetStandardCalendarItems(service, selectedDate, selectedDate.AddDays(30)); 
       } 
      } 

      public static List<Appointment> GetStandardCalendarItems(ExchangeService service, DateTime dtStart, DateTime dtEnd) 
      { 
       // Instantiate a collection to hold occurrences and exception calendar items. 
       List<Appointment> foundAppointments = new List<Appointment>(); 

       // Initialize values for the start and end times, and the number of appointments to retrieve. 
       DateTime startDate = dtStart.AddDays(-1); 
       DateTime endDate = startDate.AddDays(30); 

       //// Create a calendar view to search the calendar folder and specify the properties to return. 
       CalendarView calView = new CalendarView(startDate, endDate) 
       { 
        PropertySet = new PropertySet(BasePropertySet.FirstClassProperties) 
       }; 

       // Retrieve a collection of calendar items. 
       FindItemsResults<Appointment> findResults = service.FindAppointments(WellKnownFolderName.Calendar, calView); 

       // Add all calendar items in your view that are occurrences or exceptions to your collection. 
       foreach (Appointment appt in findResults.Items) 
       { 


        foundAppointments.Add(appt); 

       } 

       return foundAppointments; 
      } 

回答

0

发现的解决方案:参加者的的responseType总是空,因为我是做了与会者的邮箱“findappointments”,然后试图获得该与会者的responseTyp的。获取参加者的ResponseType的正确方法是为组织者的邮箱运行“findappointments”。一旦找到约会,列举出席者,并且ResponseType将可用。

+0

你是如何得到组织者邮箱的findappointments的? –

+0

请参阅上面的“更新” – foxtrotZulu

相关问题