Идентификация вложений в результате WEBDav - PullRequest
0 голосов
/ 04 ноября 2011

Использование библиотек WEBDav из Трой Вольф

Я использую следующий запрос для получения результатов с сервера Exchange

$search = <<<END
<?xml version="1.0"?><a:searchrequest xmlns:a="DAV:" xmlns:s="http://schemas.microsoft.com/exchange/security/">
<a:sql>SELECT "DAV:displayname",
"urn:schemas:httpmail:from",
"urn:schemas:httpmail:subject",
"urn:schemas:httpmail:textdescription",
"urn:schemas:httpmail:htmldescription",
"urn:schemas:httpmail:hasattachment",
"urn:schemas:httpmail:attachmentfilename",
"urn:schemas:httpmail:sender" FROM "$mailbox" WHERE "DAV:isfolder"=False AND "http://schemas.microsoft.com/exchange/outlookmessageclass"='IPM.NOTE'</a:sql>
</a:searchrequest>
END

Это работает, однако возврат возвращается как

array
  0 => 
    object(stdClass)[10]
      public '_attr' => 
        object(stdClass)[11]
      public 'A_STATUS' => 
        array
          0 => 
            object(stdClass)[12]
              public '_attr' => 
                object(stdClass)[13]
                  ...
              public '_text' => string 'HTTP/1.1 200 OK' (length=15)
      public 'A_PROP' => 
        array
          0 => 
            object(stdClass)[14]
              public '_attr' => 
                object(stdClass)[15]
                  ...
              public 'A_DISPLAYNAME' => 
                array
                  ...
              public 'D_FROM' => 
                array
                  ...
              public 'D_SUBJECT' => 
                array
                  ...
              public 'D_TEXTDESCRIPTION' => 
                array
                  ...
              public 'D_HTMLDESCRIPTION' => 
                array
                  ...
              public 'D_HASATTACHMENT' => 
                array
                  ...  
    1 => 
      object(stdClass)[28]
        public '_attr' => 
          object(stdClass)[29]
        public 'A_STATUS' => 
          array
            0 => 
            object(stdClass)[30]
              public '_attr' => 
                object(stdClass)[31]
                  ...
              public '_text' => string 'HTTP/1.1 404 Resource Not Found' (length=31)
        public 'A_PROP' => 
          array
            0 => 
              object(stdClass)[32]
                public '_attr' => 
                  object(stdClass)[33]
                    ...
                public 'D_ATTACHMENTFILENAME' => 
                  array
                    ...
                public 'D_SENDER' => 
                  array
                    ...

Независимо от того, прикреплен файл или нет, D_ATTACHMENTFILENAME возвращается с 404. Есть идеи, почему?

tl; dr - не удается получить список вложенных файлов для писем через службу webdav.

1 Ответ

1 голос
/ 08 ноября 2011

Вы не можете получить имена файлов вложений с помощью поискового запроса. Вместо этого отфильтруйте элементы, для которых hasattachment установлен в 1. Для каждого из этих элементов выполните запрос X-MS-ENUMATTS , чтобы получить свойства вложения.

...