我以前使用 webdav 根据主题和时间访问 Exchange 2003 服务器上发送的消息,这已经奏效。
我现在需要实现另一个功能,这意味着将消息从客户端 Outlook(不是 Web 访问)拖到 Windows 窗体上,然后在 Exchange 上查询 webdav 以获取有关此消息的所有信息。
我可以使用以下代码获取消息 href:
Dim msg As MAPI.Message = CType(session.GetMessage(mail.EntryID), MAPI.Message)
Dim id as string = CType(CType(msg.Fields(), MAPI.Fields).Item(&H6707001E), MAPI.Field).Value.ToString
但是有两个问题;
1) URL 上的编码在我从拖动的消息中获得的内容和从 webdav 带回的内容之间是不同的(如果我要求所有邮件,我可以看到这些)。
2)无论我如何格式化查询,即使我在带回所有消息时从列表中复制 href,它也永远不会带回结果。
以下是失败的搜索请求示例(如果您删除 where 子句则有效):
<?xml version="1.0" ?>
<D:searchrequest xmlns:D="DAV:">
<D:sql>SELECT "DAV:contentclass","DAV:href", "DAV:displayname","urn:schemas:httpmail:datereceived","urn:schemas:httpmail:subject"
FROM "https://server/exchange/mailbox" WHERE "DAV:href"='/Inbox/email.EML'</D:sql>
</D:searchrequest>
根据本文,我一直在使用相对语法,但尝试了许多组合。