【问题标题】:How to remove UserProperty with Outlook Interop?如何使用 Outlook 互操作删除 UserProperty?
【发布时间】:2021-09-23 10:19:57
【问题描述】:

我已运行以下代码来添加类型为 olText 的特定 UserProperty:

mailItem.UserProperties.Add(Name: "MyProperty", Type: OlUserPropertyType.olText);

我决定改用整数作为类型,并将代码更改为:

mailItem.UserProperties.Add(Name: "MyProperty", Type: OlUserPropertyType.olInteger);

然而,这给了我一个COMException,说明属性名称已经存在,但类型不同。我什至不知道关闭我的应用程序后用户属性会持续存在。现在我似乎无法摆脱它!

我已按照建议的here 进行了尝试,但是当我尝试使用mailItem.UserProperties["MyProperty"] 检索UserProperty 时,我得到了null

我怎样才能完全摆脱我添加的用户属性?我怎么看他们?

【问题讨论】:

    标签: c# outlook com


    【解决方案1】:

    您不能保持相同的名称并更改属性类型 - 一旦命名的 MAPI 属性与特定类型一起使用,商店提供者就会记住它。

    您需要更改属性名称。

    【讨论】:

    • 感谢您的回答。您能否详细说明“商店提供者”的含义?我能否以某种方式获得商店提供商“记住”的属性列表?
    • 存储提供程序是实际存储您的消息的内容 - 例如,它是 PST 提供程序或 MEMS(OST 和在线 Exchange 存储)。您可以在 OutlookSpy 中看到该列表:单击 IMessage(或 IMAPIFolder 或 IMsgStore),然后单击 GetNamesFromIDs
    【解决方案2】:

    使用UserProperties.Find 方法定位并返回请求的属性名称的UserProperty 对象(如果存在)。只有找到了才可以调用Delete方法来移除现有的声明添加一个新的属性类型。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多