我有一个包含自定义字段的项目的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
以及PropertyType
和PropertyName
。就我而言,我不知道PropertySetIDs
可用的是什么,更不用说PropertyType
和PropertyName
了。有没有办法获得所有可用扩展属性的列表?
答案 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);
}
}