Outlook 2007 Addin GetProperty - 不支持属性

时间:2015-01-23 12:43:20

标签: c# outlook

我有Office Outlook Addin。我在2010年创建了它,但它在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的机器?

1 个答案:

答案 0 :(得分:0)

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

在MAPI级别发生的事情是PropertyAccessor正在使用MAPI HrGetOneProp调用。这将导致大约8K的数据失败,然后你回到将该属性作为IStream。在2007年,由于性能原因以及实现该功能的成本,Outlook不会使用PropertyAccessor。因此,使用2007年的PropertyAccessor,您可以编写更大的属性,但不能将其读回。

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