Exchange Web服务 - 获取所有可用“ExtendedProperty”的列表

时间:2012-07-24 17:53:48

标签: exchangewebservices

我有一个包含自定义字段的项目的Exchange Server(例如具有自定义ExtendedProperty值的Contacts和Events )。我正在寻找一种使用Exchange Web服务(EWS)显示这些字段的方法。

根据Microsoft documentation,有一种使用ExtendedProperty方法检索单个FindItem值的简单方法。例如:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
     xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
     xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2010" />
  </soap:Header>
  <soap:Body>
    <m:FindItem Traversal="Shallow">
      <m:ItemShape>
        <t:BaseShape>AllProperties</t:BaseShape>
        <t:AdditionalProperties>
          <t:ExtendedFieldURI PropertySetId="c11ff724-aa03-4555-9952-8fa248a11c3e" 
             PropertyName="Expiration Date" PropertyType="String" />
        </t:AdditionalProperties>
      </m:ItemShape>
      <m:IndexedPageItemView MaxEntriesReturned="10" Offset="0" BasePoint="Beginning" />
      <m:ParentFolderIds>
        <t:DistinguishedFolderId Id="inbox" />
      </m:ParentFolderIds>
    </m:FindItem>
  </soap:Body>
</soap:Envelope> 

但是,这需要PropertySetID以及PropertyTypePropertyName。就我而言,我不知道PropertySetIDs可用的是什么,更不用说PropertyTypePropertyName了。有没有办法获得所有可用扩展属性的列表?

3 个答案:

答案 0 :(得分:2)

无法获取扩展(自定义)属性列表。我使用的是Independentsoft的API,他们告诉我你必须知道(请求)哪些属性想要用EWS检索。

答案 1 :(得分:0)

有一种方法可以获得扩展属性列表: 您可以使用以下代码:

ItemView view = new ItemView(100); var s = service.FindItems(WellKnownFolderName.Inbox, view); ExtendedPropertyDefinition ExtendedProp = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "Expiration Date", MapiPropertyType.String); var requestedPropertySet = new PropertySet(BasePropertySet.FirstClassProperties, ExtendedProp; var s = service.FindItems(WellKnownFolderName.Inbox, view);

然后遍历s中的每个项目,然后执行:

foreach(var s1 in s) { s1.load(requestedPropertySet); //Here you need to specify the name of each extended property and get it one by one. }

答案 2 :(得分:-1)

 if (emails[i].ExtendedProperties.Count > 0)
 {
      Console.WriteLine("Aantal extended properties *" + i + "*" + sAccount + "*" + emails[i].ExtendedProperties.Count + "*");
      foreach (ExtendedProperty extendedProperty in emails[i].ExtendedProperties)
      {
          Console.WriteLine(" Extended Property Name: " + extendedProperty.PropertyDefinition.Name);
          Console.WriteLine(" Extended Property Value: " + extendedProperty.Value);
      }
}