从c#的MailItem中获得MAPI属性

本文关键字:MAPI 属性 MailItem | 更新日期: 2023-09-27 18:04:05

我正在用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才需要这样做。任何帮助都非常感激!

从c#的MailItem中获得MAPI属性

如果你尝试

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

?

微软的MFCMapi也是定位DASL和查看所有MAPI属性的好工具。

OutlookSpy(我是它的作者)将在IMessage窗口的DASL编辑框中为您提供DASL属性名称(选择具有属性集的消息,单击IMessage按钮,选择属性,查看DASL编辑框)