Outlook 2007 插件获取 属性 - 属性 不支持

Outlook 2007 Addin GetProperty - Property not supported

我有一个 Office Outlook 插件。我为 2010 创建了它,但它在 Office 2007、2010 和 2013 上受支持。我们 运行 在 Office 2007 计算机上进行了测试并收到:

Object does not support property "http://schemas.microsoft.com/mapi/proptag/0x37010102"

我正在访问 MailItem 附件。我获取附件的 PropertyAccessor 并调用 GetProperty 方法:

const string PR_ATTACH_DATA_BIN = @"http://schemas.microsoft.com/mapi/proptag/0x37010102";
PropertyAccessor propertyAccessor = attachment.PropertyAccessor;
var PR_ATTACH_DATA_BIN_Value = propertyAccessor.GetProperty(PR_ATTACH_DATA_BIN);

我可以访问表明数据应该在上面的 属性 中找到的附件类型。附件方法是ATTACH_BY_VALUE.

在所有其他机器 运行 office 2010 和 2013 上工作时,我是否忽略了什么?

PropertyAccessor class 的 GetProperty 方法不能用于较大的 属性 值(超过 8K 字节)。不幸的是,在 Outlook 2007 中,PropertyAccessor 在检索大于大约 8KB 的属性时存在限制。

在 MAPI 级别发生的情况是 PropertyAccessor 正在使用 MAPI HrGetOneProp 调用。这将在超过 8K 的数据上失败,然后您退回到将 属性 作为 IStream。由于性能原因以及实现该功能的成本,2007 年 Outlook 没有使用 PropertyAccessor 执行此操作。因此,使用 2007 年的 PropertyAccessor,您可以编写更大的属性,但不能读回它们。

在 Outlook 2010 中,这是固定的,即使是非常大的附件,您也可以阅读附件内容。您需要使用 OpenProperty 方法 (Extended MAPI) 和 IStream 接口来弥合差距。您也可以考虑在扩展 MAPI 周围使用第三方包装器(兑换)。