C# 从C中的MailItem获取命名MAPI属性#

C# 从C中的MailItem获取命名MAPI属性#,c#,outlook-addin,mapi,outlook-2010,mailitem,C#,Outlook Addin,Mapi,Outlook 2010,Mailitem,我正在用C#开发一个Outlook 2010自定义插件。这是我第一次使用C#(我通常是java爱好者) 邮件上有一个命名(自定义)MAPI属性,我想访问该属性,但在访问时遇到问题。我的理解是,在Outlook 2007中引入了PropertyAccessor对象,它允许轻松访问命名的MAPI属性。我遵循了以下文档中的说明: 我可以使用Outlook Spy查看要在邮件上访问的命名MAPI属性。从Outlook Spy,我可以获得有关该属性的以下信息: GUID: {00020329-00

我正在用C#开发一个Outlook 2010自定义插件。这是我第一次使用C#(我通常是java爱好者)

邮件上有一个命名(自定义)MAPI属性,我想访问该属性,但在访问时遇到问题。我的理解是,在Outlook 2007中引入了PropertyAccessor对象,它允许轻松访问命名的MAPI属性。我遵循了以下文档中的说明:

我可以使用Outlook Spy查看要在邮件上访问的命名MAPI属性。从Outlook Spy,我可以获得有关该属性的以下信息:

GUID:    {00020329-0000-0000-C000-000000000046}
Tag num: 0x80BE0102
ID:      PR.AFU.MESSAGE.RETRIEVE.INFO
Type:    PT_BINARY
因此,我尝试了以下代码(对象邮件是MailItem的有效实例):

这将产生以下异常:

The property "http://schemas.microsoft.com/mapi/id/{00020329-0000-0000-C000-000000000046}/80BE0102" is unknown or cannot be found
所以我想知道如何得到这个财产?我是否错误地形成了名称空间引用?或者我是否需要使用本例中概述的方法:


我的理解是,这只是2007年以前版本的Outlook所必需的。非常感谢您的帮助

如果你尝试,会发生什么

mail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x80BE0102");

OutlookSpy将在IMessage窗口的DASL编辑框中为您提供DASL属性名称。

也是查找DASL和查看所有MAPI属性的一个很好的工具。

我还没有尝试过,因为我的理解是,该方法仅适用于标记号<0x8000000的exchange属性。我会尝试一下,如果成功的话会报告。使用proptag引用的方法也不起作用。使用字符串模式有效:mail.PropertyAccessor.GetProperty(“{00020329-0000-0000-C000-0000000000 46}/PR.AFU.MESSAGE.RETRIEVE.INFO”);很高兴知道。。。我只看到IBM for exchange的一个模块在去年10月的同一个属性中出现了相同的问题。。。他们宣布了一个错误修复,但没有写它是如何修复的…谢谢。在找到正确的格式并再次查看Outlook Spy之后,我意识到了这一点。我来这里只是想发布同样的东西。为了将来参考那些在这个问题上遇到障碍的人,Andrew正在使用(变体,生成的)标记号来构建DASL,在这里他应该使用命名属性本身的(不变的)ID。命名属性由其命名空间(GUID)和ID(字符串或数字)定义。
mail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x80BE0102");