【问题标题】:Outlook 2007 Addin GetProperty - Property not supportedOutlook 2007 插件 GetProperty - 不支持属性
【发布时间】:2015-03-22 12:15:40
【问题描述】:

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

对象不支持属性 "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 的所有其他机器上运行时,我是否忽略了什么?

【问题讨论】:

    标签: c# outlook


    【解决方案1】:

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

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

    在已修复的 Outlook 2010 中,即使是非常大的附件,您也可以阅读附件内容。您需要使用 OpenProperty 方法(扩展 MAPI)和 IStream 接口来弥补差距。您也可以考虑在扩展 MAPI 周围使用第三方包装器(赎回)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多