【问题标题】:Exchange Web Services - Get list of all available "ExtendedProperty"Exchange Web 服务 - 获取所有可用“ExtendedProperty”的列表
【发布时间】:2016-08-26 08:09:22
【问题描述】:

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

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

<?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。有没有办法获取所有可用扩展属性的列表?

【问题讨论】:

    标签: exchangewebservices


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      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. }

      【讨论】:

        【解决方案3】:
         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);
              }
        }
        

        【讨论】:

        • 我认为您正在说明如何枚举给定电子邮件的扩展属性。我想查找给定邮箱/服务器的扩展属性列表,而无需遍历每封电子邮件、联系人、日历约会等。
        • 另外,您能否解释一下您是如何在示例中获得扩展属性列表的?你调用了什么网络方法?你使用了哪些参数?
        猜你喜欢
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        • 2014-08-13
        • 2011-03-24
        • 1970-01-01
        • 2015-10-28
        • 2014-05-14
        • 2012-11-23
        相关资源
        最近更新 更多