Удаление сообщений электронной почты Exchange 2003 с помощью WebDav

Я пытаюсь автоматически управлять почтовым ящиком в Exchange 2003 с помощью webdav из приложения C #. Просмотр msdn мне не очень помогает, поскольку методы, описанные здесь (http://msdn.microsoft.com/en-us/library/aa142917.aspx), вообще не совпадают с образцами, которые я нашел в противном случае. Итак, я пытаюсь определить две вещи:

Из всех полей, возвращаемых из запроса WebDAV

string reqStr =
                @"<?xml version=""1.0""?>
                <g:searchrequest xmlns:g=""DAV:"">
                    <g:sql>
                        SELECT
                            *
                        FROM
                            ""http://server/Exchange/[email protected]/Inbox/""
                        WHERE ""urn:schemas:mailheader:from"" = '[email protected]'
                        </g:sql>
                </g:searchrequest>";

Какой из них уникальный идентификатор? Я просмотрел его (но не уверен в ссылке для проверки полей), и на первый взгляд кажется, что DAV: id - это то, что я хочу (), но я не хочу работать на предположениях.

Во-вторых, как правильно программно удалить электронное письмо после того, как я его обработал? Хотелось бы что-то вроде следующей работы (удалит ли запись и все связанные метаданные). Я не хочу, чтобы на сервере оставались осиротевшие файлы ...

string reqStr =
                @"<?xml version=""1.0""?>
                <g:searchrequest xmlns:g=""DAV:"">
                    <g:sql>
                        DELETE
                        FROM
                            ""http://server/Exchange/[email protected]/Inbox/""
                        WHERE ""DAV:id"" = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'                                                       
                        </g:sql>
                </g:searchrequest>";

И, наконец, каковы лучшие онлайн-источники для исследования всех данных, возвращаемых в XML из первого запроса, и где все параметры задокументированы для управления интерфейсом webdav? Смотреть на MSDN было бесполезно.


person Paul    schedule 27.06.2011    source источник
comment
Что ж, я решил, что это абсолютно не сработает, я получаю от сервера 400 Bad Request. Мне все еще нужен способ удалить отдельные электронные письма.   -  person Paul    schedule 28.06.2011
comment
См. msdn.microsoft.com/en-us/ библиотека / aa142839 (v = EXCHG.65) .aspx   -  person Henning Krause    schedule 28.06.2011


Ответы (2)


Найдите в ответе тег dav: hef tags. Они содержат URL-адрес, который вы можете использовать для выполнения команды удаления.

person Henning Krause    schedule 28.06.2011
comment
Хорошо, я вижу это ‹a: href› с URL-адресом. Как бы я сформулировал УДАЛИТЬ? Будет ли это так же, как указано выше, за исключением предложения WHERE для DAV: ID = 'urlstring' - person Paul; 28.06.2011
comment
Думаю, в качестве продолжения, нужно ли мне что-нибудь делать, чтобы очистить узлы, где ‹a: propstat› ‹a: status› = 404? Кажется, на каждые 200 приходится 404 человека. - person Paul; 28.06.2011
comment
Вы просто вводите HTTP-команду DELETE для URL-адреса. Больше ничего. Вы получаете ошибку 404 для несуществующих свойств. Просто игнорируйте их. - person Henning Krause; 28.06.2011

Из результата запроса, который дает вам сообщение URI, тогда:

var request = (HttpWebRequest)WebRequest.Create(mail.MailUri);
request.Credentials = _credential;
request.Method = "DELETE";

var response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode != HttpStatusCode.OK)
{
   //something might of broke
}
person Jafin    schedule 04.08.2014