Ранее я использовал webdav для доступа к отправленным сообщениям на сервере Exchange 2003 в зависимости от темы и времени, и это сработало.
Теперь мне нужно реализовать еще одну функцию, которая означает перетаскивание сообщения из клиентского Outlook (а не веб-доступа) в форму Windows с последующим запросом 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>
Я использовал относительный синтаксис согласно этой статье, но перепробовал множество комбинаций.