Программное чтение писем из почтового ящика Exchange Server 2010

у нас есть приложение на C #, которое читает почтовый ящик «Входящие», размещенный в настоящее время на Exchange 2003, с помощью службы http.

Теперь почтовый ящик нужно перенести на сервер Exchange 2010, поэтому мы тестируем наш код, чтобы убедиться, что он по-прежнему будет работать.

Мы получаем ошибку «Плохой запрос» с приведенным ниже кодом (который пытается получить всю почту): public static XmlDocument GetUnreadMailAll () {HttpWebRequest loRequest = default (HttpWebRequest); HttpWebResponse loResponse = по умолчанию (HttpWebResponse); строка lsRootUri = null; строка lsQuery = null; байт [] laBytes = ноль;

        Stream loRequestStream = default(Stream);
        Stream loResponseStream = default(Stream);
        XmlDocument loXmlDoc = default(XmlDocument);
        loXmlDoc = new XmlDocument();
        try
        {
            lsRootUri = strServer + "/Exchange/" + strAlias + "/" + strInboxURL;
            lsQuery = "<?xml version=\"1.0\"?>"
                + "<D:searchrequest xmlns:D = \"DAV:\" xmlns:m=\"urn:schemas:httpmail:\">"
                + "<D:sql>SELECT "
                + "\"urn:schemas:httpmail:to\", "
                + "\"urn:schemas:httpmail:displayto\", "
                + "\"urn:schemas:httpmail:from\", "
                + "\"urn:schemas:httpmail:fromemail\", "
                + "\"urn:schemas:httpmail:subject\", "
                + "\"urn:schemas:httpmail:textdescription\", "
                //+ "\"urn:schemas:httpmail:htmldescription\", "
                + "\"urn:schemas:httpmail:hasattachment\", "
                + "\"urn:schemas:httpmail:attachmentfilename\", "
                + "\"urn:schemas:httpmail:senderemail\", "
                + "\"urn:schemas:httpmail:sendername\", "
                + "\"DAV:displayname\", "
                + "\"urn:schemas:httpmail:datereceived\", "
                + "\"urn:schemas:httpmail:read\", "
                + "\"DAV:id\" "
                + "FROM \"" + lsRootUri
                + "\" WHERE \"DAV:ishidden\" = false "
                + "AND \"DAV:isfolder\" = false "
                + "AND \"urn:schemas:httpmail:read\" = false "
                + "AND \"urn:schemas:httpmail:fromemail\" != '[email protected]' "
                + "</D:sql></D:searchrequest>";
            loRequest = (HttpWebRequest)WebRequest.Create(lsRootUri);
            loRequest.Credentials = new NetworkCredential(strUserName, strPassword);
            loRequest.Method = "SEARCH";
            laBytes = System.Text.Encoding.UTF8.GetBytes(lsQuery);
            loRequest.ContentLength = laBytes.Length;
            loRequestStream = loRequest.GetRequestStream();
            loRequestStream.Write(laBytes, 0, laBytes.Length);
            loRequestStream.Close();
            loRequest.ContentType = "text/xml";
            loRequest.Headers.Add("Translate", "F");
            loResponse = (HttpWebResponse)loRequest.GetResponse();
            loResponseStream = loResponse.GetResponseStream();
            loXmlDoc.Load(loResponseStream);
            loResponseStream.Close();
        }

исключение выбрасывается в строке loResponseStream = loResponse.GetResponseStream();

вот xml, который мы отправляем:

  <?xml version="1.0" ?> 
- <D:searchrequest xmlns:D="DAV:" xmlns:m="urn:schemas:httpmail:">
  <D:sql>SELECT "urn:schemas:httpmail:to", "urn:schemas:httpmail:displayto", "urn:schemas:httpmail:from", "urn:schemas:httpmail:fromemail", "urn:schemas:httpmail:subject", "urn:schemas:httpmail:textdescription", "urn:schemas:httpmail:hasattachment", "urn:schemas:httpmail:attachmentfilename", "urn:schemas:httpmail:senderemail", "urn:schemas:httpmail:sendername", "DAV:displayname", "urn:schemas:httpmail:datereceived", "urn:schemas:httpmail:read", "DAV:id" FROM "https://domain/Exchange/bbtest/Inbox" WHERE "DAV:ishidden" = false AND "DAV:isfolder" = false AND "urn:schemas:httpmail:read" = false AND "urn:schemas:httpmail:fromemail" != '[email protected]'</D:sql> 
  </D:searchrequest>

person Our Man in Bananas    schedule 20.02.2014    source источник


Ответы (1)


и из MSDN ответ заключается в том, что WebDAV устарел после Exchange 2007 и заменен веб-службами Exchange.

вот пара ссылок:

person Our Man in Bananas    schedule 24.02.2014