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

时间:2011-07-28 16:25:08

标签: c# outlook-addin mapi outlook-2010 mailitem

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

我希望访问的邮件上有一个命名(自定义)MAPI属性,但我遇到了麻烦。我的理解是在Outlook 2007中引入了PropertyAccessor对象,该对象允许轻松访问命名的MAPI属性。我按照以下文档中的说明进行操作:

http://msdn.microsoft.com/en-us/library/ff868915.aspx

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

GUID:    {00020329-0000-0000-C000-000000000046}
Tag num: 0x80BE0102
ID:      PR.AFU.MESSAGE.RETRIEVE.INFO
Type:    PT_BINARY

所以我尝试了以下代码(对象邮件是MailItem的有效实例):

mail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/id/{00020329-0000-0000-C000-000000000046}/80BE0102");

这会产生以下异常:

The property "http://schemas.microsoft.com/mapi/id/{00020329-0000-0000-C000-000000000046}/80BE0102" is unknown or cannot be found

所以我想知道如何实际获得这个属性?我是否错误地形成了命名空间参考?或者我是否需要使用此示例中概述的方法:

http://www.outlookcode.com/codedetail.aspx?id=1112

我的理解是,这仅适用于2007年之前版本的Outlook。非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

如果您尝试

会发生什么
mail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x80BE0102");

答案 2 :(得分:0)

Microsoft's MFCMapi也是查找DASL并查看所有MAPI属性的绝佳工具。