1

参考:Outlook 2013 Windows 8

我已经使用 SetProperty 在外发邮件上设置了自定义属性。一旦在另一台机器上收到邮件,我就可以在 Internet 邮件标题中看到此属性及其值。即使收到的邮件中存在该属性及其关联值,我也无法使用 GetProperty 检索此属性的值。

使用以下代码设置属性:

Const SchemaPrefix As String = "http://schemas.microsoft.com/mapi/string/"
Const SchemaCode As String = "{00020386-0000-0000-C000-000000000046}/ABC-ID"

Dim pa As Outlook.PropertyAccessor

Dim ID_Schema As String
Dim ID_Value As String

ID_Schema = SchemaPrefix & SchemaCode
ID_Value = "12345"

Set pa = item.PropertyAccessor
pa.SetProperty ID_Schema, ID_Value

在另一台机器上收到的邮件中,我可以看到 Internet messager 标头包含:

ABC-ID: 12345

但是,以下代码失败,并返回错误 - 属性“ http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/ABC-ID ”未知或不能成立。
最后一行发生错误:pa.GetProperty(ID_Schema)

Const SchemaPrefix As String = "http://schemas.microsoft.com/mapi/string/"
Const SchemaCode As String = "{00020386-0000-0000-C000-000000000046}/ABC-ID"

Dim pa As Outlook.PropertyAccessor
Dim ID_Schema As String
Dim objFolder As Folder

ID_Schema = SchemaPrefix & SchemaCode

Set objFolder = Outlook.ActiveExplorer.CurrentFolder
Set pa = objFolder.Items.item(1).PropertyAccessor
MsgBox pa.GetProperty(ID_Schema)

在测试文件夹中,只有一封电子邮件......我能够手动验证自定义属性的存在及其在发送机器上设置的值

在网上找到了一些关于如何设置属性的参考资料......但没有关于如何检索属性值的参考资料。指导将不胜感激。

4

1 回答 1

1

自定义 MIME 属性不会从 MIME 标头自动提升为命名的 MAPI 属性。Exchange 已经习惯了,但现在不再 - 因为您最多可以拥有 0xFFFF 唯一的命名属性,这是一个很好的拒绝服务通道:只需将带有几千个 x 标头的消息发送到邮箱,您就会永久地对其进行烘烤.

如果您在中看到自定义 x-header PR_TRANPORT_MESSAGE_HEADERS(使用OutlookSpy并查看消息以查看它以及所有其他 MAPI 属性 - 单击 IMessage 按钮),您可以读取 MIME 标头并以编程方式提取您的自定义标头。PR_TRANPORT_MESSAGE_HEADERS可以使用 访问MailItem.PropertyAccessor,它的 DASL 名称是http://schemas.microsoft.com/mapi/proptag/0x007D001F.

于 2013-05-30T17:13:34.073 回答