2014-02-12 53 views
1

您好,我正在使用以下代碼從EWS獲取自定義標題。EWS - 獲取自定義標題

但不幸的是它沒有返回標題。我使用Mapi工具查看了標題的前景,我可以看到標題。

請提出任何建議。

service = ExchangeServiceHelpers.GetBinding(); 

       // Bind the Inbox folder to the service object 
       var inbox = Folder.Bind(service, WellKnownFolderName.Inbox); 

       var searchFilter = ExchangeServiceHelpers.PopulateSearchFilters(); 

       var view = new ItemView(int.MaxValue); // Search operation should return maximum number of elements. 

       // Defines a property set that contains the schematized Internet message headers. 


       var headerProperty = new ExtendedPropertyDefinition(
         DefaultExtendedPropertySet.InternetHeaders, 
        "x-worksitefolderemailid", 
         MapiPropertyType.String); 

       var columns = new PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.InternetMessageId, headerProperty); 


       view.PropertySet = columns; 

       // Fire the query for the unread items 
       var findResults = inbox.FindItems(searchFilter, view); 



       // Loop through the search results. 
       foreach (EmailMessage message in findResults) 
       { 
        try 
        { 
         message.Load(
          new PropertySet(new PropertyDefinitionBase[] { ItemSchema.MimeContent, ItemSchema.Subject})); 

         string mailAddress = GetFolderId(message, headerProperty); // Get internet header 

         if (string.IsNullOrEmpty(mailAddress)) 
         { 
          Logger.Info(
           string.Format("Email '{0}' doesn't have folder id address. Marking as Read Item.", 
               message.Subject)); 
          ExchangeServiceHelpers.MarkMessageAsRead(service, message.Id); // Marking the email item as Read prevents the item to be returned in further search results. 
          continue; 
         } 



        } 
        catch (Exception e) 
        { 
         Logger.Error(e); 
        } 
       } 

private static string GetFolderId(EmailMessage message, ExtendedPropertyDefinition headerProperty) 
     { 
      try 
      { 


       if (message.ExtendedProperties == null || message.ExtendedProperties.Count == 0) 
       { 
        Logger.Info(
         string.Format("Email '{0}' doesn't have any extended properties. Marking as Read Item.", 
             message.Subject)); 
        return string.Empty; 
       } 
       //message.InternetMessageHeaders 
       foreach (ExtendedProperty property in message.ExtendedProperties) 
       { 
        if (property.PropertyDefinition == headerProperty) 
        { 
         return property.Value.ToString(); 
        } 
       } 

      } 
      catch (Exception ex) 
      { 
       Logger.Error(ex); 
      } 

      return string.Empty; 
     } 

回答

0

納雷什,

的inbox.FindItems()調用不會返回Internet郵件頭。您需要更新message.Load()以使用包含headerProperty的屬性集。

致敬,