3

我有一个 Exchange 服务器,其中包含具有自定义字段的项目(例如,具有自定义 ExtendedProperty 值的联系人和事件)。我正在寻找一种使用 Exchange Web 服务 (EWS) 显示这些字段的方法。

根据Microsoft 文档,有一种使用该方法检索单个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和。就我而言,我不知道有什么可用的,更不用说and了。有没有办法获取所有可用扩展属性的列表?PropertyTypePropertyNamePropertySetIDsPropertyTypePropertyName

4

3 回答 3

2

It is not possible to get list of extended (custom) properties. I was using API from Independentsoft and they told me that you have to know (request) which properties want to retrieve with EWS.

于 2012-07-31T08:55:42.503 回答
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. }

于 2016-08-26T00:09:22.433 回答
-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);
      }
}
于 2013-04-20T13:49:28.120 回答