【发布时间】:2021-04-24 19:15:11
【问题描述】:
我正在尝试从附件中的 Word/Excel 文档中检索一些内置(甚至自定义?)属性,而不保存临时文件并在相应的应用程序中打开它们。我尝试将它们附加到MailItem 和DocumentItem。
我感兴趣的属性是:作者、标题、LastSaveDtm 等。Outlook 似乎能够获取它们,因为作者姓名出现在 DocumentItem 的预览窗格顶部。
我能找到获取这些属性的唯一方法是使用here 所述的以下方法:
varProp = MailItem.PropertyAccessor.GetProperties(SchemaName)
varProp = DocumentItem.PropertyAccessor.GetProperties(SchemaName)
varProp = MailItem.Attachments(1).PropertyAccessor.GetProperties(SchemaName)
varProp = DocumentItem.Attachments(1).PropertyAccessor.GetProperties(SchemaName)
SchemaName 在这里定义:[MS-OXPROPS]: Exchange Server Protocols Master Property List
规范中的一些有趣定义:
- 命名属性:由 GUID 和字符串名称或 32 位标识符标识的属性
- Document 对象:表示单个文件的 Message 对象,例如由文字处理应用程序生成的文档。这 消息对象包含文件作为附件对象并包括 用于描述文件的其他属性。
我尝试检索的属性没有与proptag 命名空间(其中根据我测试过的内容工作*),也没有与id 命名空间一起使用的 MAPI id 语法(规范名称,如 PidLidPropName),但只有 MAPI id syntax strong>MAPI 字符串语法(规范名称,如 PidNamePropName)与string 命名空间一起使用。
这是我为SchemaName 尝试的:
"http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/Author"
"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/Title"
"urn:schemas-microsoft-com:office:office#Author"
"urn:schemas-microsoft-com:office:office#Title"
它们都不起作用。
This document 表示“命名属性由客户端定义,有时由服务提供者定义”
我还没有看到文档属性应该“在 MAPI 中自动发布”。
那么我做错了什么?
(*) SchemaName 的工作(PidTagSubject):
"http://schemas.microsoft.com/mapi/proptag/0x0037001E""http://schemas.microsoft.com/exchange/subject-utf8"
【问题讨论】:
-
没有理由猜测 - 只需使用 OutlookSpy 查看现有的 DocumentItem(单击 IMessage 按钮)。这些属性均未设置。
-
我无法安装 OutlookSpy。为什么他们没有设置?这不是他们的目的吗?
-
不保证存在 MAPI 属性。
-
好吧,如果你想到另一种不需要救赎的方式,我全都听好了!
标签: vba outlook properties namespaces mapi