How to get Extended MAPI Properties in the GetItem Exchange Web Service call?

We can get/set Extended MAPI Properties using Exchange Web Services for Exchange Server 2007/2010.

Here is sample code snippet to get value for CleanGlobalObjectID via GetItem call of Exchange Web Services:

NOTE: Following programming examples is for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This sample code assumes that you are familiar with the programming language being demonstrated and the tools used
to create and debug procedures.

 private void fnGetCalItem()
         {
             // Form the GetItem request
             GetItemType getRequest = new GetItemType();
  
             // Define which item properties are returned in the response
             ItemResponseShapeType itemProperties = new ItemResponseShapeType();
             itemProperties.BaseShape = DefaultShapeNamesType.AllProperties;
  
             // Add properties shape to request
             getRequest.ItemShape = itemProperties;
  
             // Set the itemID of the desired item to retrieve
             ItemIdType id = new ItemIdType();
             id.Id = itemID;
             getRequest.ItemIds = new ItemIdType[] { id };
  
  
             PathToExtendedFieldType[] pteft = new PathToExtendedFieldType[1];
  
             pteft[0] = new PathToExtendedFieldType();
             
             //Add CleanGlobalObjectID extended property 
             pteft[0].PropertyId = 35;
             pteft[0].PropertyIdSpecified = true;
             pteft[0].PropertySetId  = "6ED8DA90-450B-101B-98DA-00AA003F1305" ; 
             pteft[0].PropertyType = MapiPropertyTypeType.Binary;
             itemProperties.AdditionalProperties = pteft;
  
             // Send the listing (find) request and get the response
             GetItemResponseType getResp = binding.GetItem(getRequest);
  
             // Get the response message
             if (getResp.ResponseMessages.Items[0].ResponseClass == ResponseClassType.Success)
             {
                 ItemInfoResponseMessageType iirmt = getResp.ResponseMessages.Items[0] as ItemInfoResponseMessageType;
                 itemGCOID = iirmt.Items.Items[0].ExtendedProperty[0].Item.ToString() ;
              }
             else
             {
                 Console.WriteLine(getResp.ResponseMessages.Items[0]);
             }
         }

 

Articles referenced for the above sample code:

- EWS: UID not always the same for orphaned instances of the same meeting. https://blogs.msdn.com/mstehle/archive/2009/09/02/ews-uid-not-always-the-same-for-orphaned-instances-of-the-same-meeting.aspx

**PidLidCleanGlobalObjectId Canonical Property**  
[https://msdn.microsoft.com/en-us/library/cc839502.aspx](https://msdn.microsoft.com/en-us/library/cc839502.aspx "https://msdn.microsoft.com/en-us/library/cc839502.aspx")

Hope this helps!

Comments

  • Anonymous
    June 01, 2010
    you are just awesome, it worked for me, was trying it for last 72 hours and have browsed around 50 blogs. Just this one worked.... thanks a lot.