如何在标题中显示现有项目的ExtendedProperty?

时间:2016-07-22 14:36:32

标签: c# exchangewebservices ews-managed-api exchange-server-2013

我正在使用EWS与Exchange进行交互。当我找到传入的电子邮件时,我在该邮件上设置了一个自定义扩展属性,以与我的数据库中的ID相关联。该属性保存为交换,我可以在查询交换时检索该值。但是当我在Outlook中打开项目时,我看不到标题:它没有在电子邮件属性中列出。我需要做些什么特别的东西才能看到它吗?

这是我的代码:

var propertyDefinition = new ExtendedPropertyDefinition(
      DefaultExtendedPropertySet.InternetHeaders, "X-My-Property",
      MapiPropertyType.String);

//从ExchangeService.FindItems()中检索项目     var item = ...

// Set the property on the exchange item 
item.SetExtendedProperty(propertyDefinition, myId.ToString());

// Update the server
item.Update(ConflictResolutionMode.AlwaysOverwrite);

现在,当我查看该项目时,我希望在标题中看到“X-My-Property”,但我没有。

我可以检索我正在使用此代码的值:

foreach (var prop in item.ExtendedProperties)
{
    if (prop.PropertyDefinition.Name == "X-My-Property" && prop.Value != null)
    {
        return propValue = prop.Value.ToString();

    }
}

如果我使用相同的代码在我发送的新电子邮件上设置属性,那么我会在收到该电子邮件时看到该属性。即不在已发送邮件中的邮件中,而是在收件人收件箱中的邮件中。

1 个答案:

答案 0 :(得分:1)

唯一一次更新MIME标头是在发送或接收邮件期间。您的所有代码都在设置扩展属性(然后在发送时将其提升为消息标题)这里有更多解释https://msdn.microsoft.com/en-us/library/office/hh545614(v=exchg.140).aspx

您在Outlook中看到的是PR_Transport_headers属性,您也可以修改该属性但不会影响MIME内容。为什么重要的是你能够看到它应该总是可以通过EWS访问它。