如何使现有项目的 ExtendedProperty 在 headers 中可见?

How to make ExtendedProperty on existing item visible in headers?

我正在使用 EWS 与 Exchange 交互。当我找到一封收到的电子邮件时,我在该邮件上设置了一个自定义扩展 属性 以与我的数据库中的 ID 相关联。 属性 保存到 exchange 中,我可以稍后在查询 exchange 时检索该值。但是当我在 Outlook 中打开该项目时,我看不到 header:它没有列在电子邮件属性中。我需要做一些特别的事情才能使它可见吗?

这是我的代码:

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

// 从 ExchangeService.FindItems() 中检索项目 变量项 = ...

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

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

现在,当我查看交换物品时,我希望在 header 中看到 'X-My-Property',但我没有。

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

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

    }
}

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

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

您在 Outlook 中看到的是 PR_Transport_headers 属性,您也可以对其进行修改,但这不会影响 MIME 内容。为什么您能够看到 属性 它应该始终可以通过 EWS 访问。