识别WEBDav结果中的附件

时间:2011-11-03 23:27:23

标签: php exchange-server webdav

使用Troy Wolf

中的WEBDav库

我正在使用以下查询从Exchange Server中提取结果

$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 个答案:

答案 0 :(得分:1)

您无法使用搜索请求获取附件的文件名。而是过滤对hasattachment设置为1的项目。对每个元素进行操作,发出X-MS-ENUMATTS请求以获取附件属性。