从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才需要这样做。任何帮助都非常感激!
如果你尝试
mail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x80BE0102");
?
微软的MFCMapi也是定位DASL和查看所有MAPI属性的好工具。
OutlookSpy(我是它的作者)将在IMessage窗口的DASL编辑框中为您提供DASL属性名称(选择具有属性集的消息,单击IMessage按钮,选择属性,查看DASL编辑框)