扩展属性不遵守EmailMessage

时间:2019-03-31 14:56:03

标签: c# exchangewebservices extended-properties

我正在运行的代码似乎在添加扩展属性和值。似乎运行良好。遍历MailItems时,看不到扩展属性的任何证据。

要扩展的代码:

EmailMessage email2 = EmailMessage.Bind(service, result.Items[0].Id);
Guid MyPropertySetId = new Guid("{C11FF724-AA03-4555-9952- 
8FA248A11C3E}");
ExtendedPropertyDefinition extendedPropertyDefinition = new 
ExtendedPropertyDefinition(MyPropertySetId, "ServiceCat", 
MapiPropertyType.String);
email2.SetExtendedProperty(extendedPropertyDefinition, "Level2 big daddy");
email2.Update(ConflictResolutionMode.AlwaysOverwrite);

读取扩展属性的代码:

   foreach (Item item in result.Items)
        {
            Console.WriteLine(item.Subject);
            if (item.ExtendedProperties.Count > 0)
            {
                // Display the name and value of the extended property.
                foreach (ExtendedProperty extendedProperty in item.ExtendedProperties)
                {
                    Console.WriteLine(" Extended Property Name: " + extendedProperty.PropertyDefinition.Name);
                    Console.WriteLine(" Extended Property Value: " + extendedProperty.Value);
                }
            }
        }

我尝试重新连接以通过电子邮件进行迭代,以查看是否存在扩展属性,但数组长度保持为0。 foreach永远不会踢。

我假设扩展的特权已保存在交易所“ email2.Update(ConflictResolutionMode.AlwaysOverwrite)”中,并且应该能够被读回

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:1)

您需要使用属性集加载扩展属性,然后才能在消息中枚举它,例如

        PropertySet psPropSet = new PropertySet();
        psPropSet.Add(extendedPropertyDefinition );
        ItemView itemView = new ItemView(1000);
        itemView.PropertySet = psPropSet;

然后可以使用TryGetProperty来获取扩展属性(如果已设置)