2011-06-27 98 views
0

我試圖在C#應用程序中使用webdav自動管理Exchange 2003中的收件箱。看看msdn並沒有幫助我很多,因爲這裏描述的方法(http://msdn.microsoft.com/en-us/library/aa142917.aspx)與我發現的其他樣本完全不符。因此,有兩件事情我想確定:使用WebDav刪除Exchange 2003電子郵件

,從一個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並沒有取得豐碩的成果。

+0

好了,我已經決定這絕對行不通,我得到一個400錯誤請求從服務器返回。我仍然需要一種方法來刪除單個電子郵件。 – Paul

+0

請參閱http://msdn.microsoft.com/en-us/library/aa142839(v=EXCHG.65).aspx –

回答

2

在響應中查找dav:hef標記標記。它們包含可用於發出刪除命令的url。

+0

好吧,我看到這個帶有URL的。我將如何制定一個DELETE?除了WHERE子句是用於「」DAV:ID「」='urlstring' – Paul

+0

我想作爲後續,我需要做些什麼來清理節點 = 404?似乎每200個有404個。 – Paul

+0

您只需向該URL發出HTTP DELETE命令。而已。你會得到不存在的屬性的404錯誤。只要忽略它們。 –

0

從得到您的味精烏里那麼查詢的結果:

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 
} 
相關問題