' Code: Dmitry Stremkouski ' Date: 17.11.2006 ' License: GPL ' Usage: objectURL PostmasterLogin PostmasterPassword ' example: ' cscript //nologo ListEmailsForFolder.vbs http://ex-2/exchange/testuser/Inbox/ superv1sor myPassw0rd ' note: ' ex-2 must be Exchange server, ex-2 must contain testuser's mailbox. ' superv1sor ought have access rights to testuser's mailbox ' Get command line arguments. Dim obArgs Dim cArgs Set obArgs = WScript.Arguments cArgs = obArgs.Count Main Sub Main() On Error Resume Next sUrl = obArgs.Item(0) ListIt(sUrl) End Sub Public Sub ListIt(sUrl) Dim oXMLHttp Dim oXMLDoc Dim oXMLHREFNodes Dim oXMLHasSubsNodes Dim sQuery Set oXMLHttp = CreateObject("Microsoft.xmlhttp") If Err.Number <> 0 Then WScript.Echo "Error Creating XML object" WScript.Echo Err.Number & ": " & Err.Description Set oXMLHttp = Nothing End If ' Open DAV connection. oXMLHttp.open "SEARCH", sUrl, False, obArgs.Item(1), obArgs.Item(2) If Err.Number <> 0 Then WScript.Echo "Error opening DAV connection" WScript.Echo Err.Number & ": " & Err.Description Set oXMLHttp = Nothing End If ' Set up query. sSHTTPM = "urn:schemas:httpmail:" sSMH = "urn:schemas:mailheader:" sQuery = "" sQuery = sQuery & "" sQuery = sQuery & "" sQuery = sQuery & "SELECT ""DAV:displayname"", " sQuery = sQuery & """DAV:href"", """ & sSHTTPM & "datereceived" & """, " sQuery = sQuery & " """ & sSHTTPM & "attachmentfilename" & """, " sQuery = sQuery & " """ & sSHTTPM & "content-media-type" & """, " sQuery = sQuery & " """ & sSHTTPM & "bcc" & """, " sQuery = sQuery & " """ & sSHTTPM & "cc" & """, " sQuery = sQuery & " """ & sSHTTPM & "from" & """, " sQuery = sQuery & " """ & sSHTTPM & "flagcompleted" & """, " sQuery = sQuery & " """ & sSHTTPM & "displaycc" & """, " sQuery = sQuery & " """ & sSHTTPM & "displayto" & """, " sQuery = sQuery & " """ & sSHTTPM & "content-disposition-type" & """, " sQuery = sQuery & " """ & sSHTTPM & "date" & """, " sQuery = sQuery & " """ & sSHTTPM & "fromemail" & """, " sQuery = sQuery & " """ & sSHTTPM & "fromname" & """, " sQuery = sQuery & " """ & sSHTTPM & "hasattachment" & """, " sQuery = sQuery & " """ & sSHTTPM & "htmldescription" & """, " sQuery = sQuery & " """ & sSHTTPM & "importance" & """, " sQuery = sQuery & " """ & sSHTTPM & "thread-topic" & """, " sQuery = sQuery & " """ & sSHTTPM & "to" & """, " sQuery = sQuery & " """ & sSHTTPM & "messageflag" & """, " sQuery = sQuery & " """ & sSHTTPM & "normalizedsubject" & """, " sQuery = sQuery & " """ & sSHTTPM & "priority" & """, " sQuery = sQuery & " """ & sSHTTPM & "reply-by" & """, " sQuery = sQuery & " """ & sSHTTPM & "reply-to" & """, " sQuery = sQuery & " """ & sSHTTPM & "savedestination" & """, " sQuery = sQuery & " """ & sSHTTPM & "saveinsent" & """, " sQuery = sQuery & " """ & sSHTTPM & "sender" & """, " sQuery = sQuery & " """ & sSHTTPM & "senderemail" & """, " sQuery = sQuery & " """ & sSHTTPM & "sendername" & """, " sQuery = sQuery & " """ & sSHTTPM & "subject" & """, " sQuery = sQuery & " """ & sSHTTPM & "submitted" & """, " sQuery = sQuery & " """ & sSHTTPM & "textdescription" & """, " sQuery = sQuery & " """ & sSMH & "approved" & """, " sQuery = sQuery & " """ & sSMH & "bcc" & """, " sQuery = sQuery & " """ & sSMH & "cc" & """, " sQuery = sQuery & " """ & sSMH & "comment" & """, " sQuery = sQuery & " """ & sSMH & "content-base" & """, " sQuery = sQuery & " """ & sSMH & "content-class" & """, " sQuery = sQuery & " """ & sSMH & "content-description" & """, " sQuery = sQuery & " """ & sSMH & "content-disposition" & """, " sQuery = sQuery & " """ & sSMH & "content-id" & """, " sQuery = sQuery & " """ & sSMH & "content-language" & """, " sQuery = sQuery & " """ & sSMH & "content-location" & """, " sQuery = sQuery & " """ & sSMH & "content-transfer-encoding" & """, " sQuery = sQuery & " """ & sSMH & "content-type" & """, " sQuery = sQuery & " """ & sSMH & "control" & """, " sQuery = sQuery & " """ & sSMH & "date" & """, " sQuery = sQuery & " """ & sSMH & "disposition" & """, " sQuery = sQuery & " """ & sSMH & "disposition-notification-to" & """, " sQuery = sQuery & " """ & sSMH & "distribution" & """, " sQuery = sQuery & " """ & sSMH & "expires" & """, " sQuery = sQuery & " """ & sSMH & "expiry-date" & """, " sQuery = sQuery & " """ & sSMH & "followup-to" & """, " sQuery = sQuery & " """ & sSMH & "from" & """, " sQuery = sQuery & " """ & sSMH & "importance" & """, " sQuery = sQuery & " """ & sSMH & "in-reply-to" & """, " sQuery = sQuery & " """ & sSMH & "keywords" & """, " sQuery = sQuery & " """ & sSMH & "lines" & """, " sQuery = sQuery & " """ & sSMH & "message-id" & """, " sQuery = sQuery & " """ & sSMH & "mime-version" & """, " sQuery = sQuery & " """ & sSMH & "newsgroups" & """, " sQuery = sQuery & " """ & sSMH & "organization" & """, " sQuery = sQuery & " """ & sSMH & "original-recipient" & """, " sQuery = sQuery & " """ & sSMH & "path" & """, " sQuery = sQuery & " """ & sSMH & "posting-version" & """, " sQuery = sQuery & " """ & sSMH & "priority" & """, " sQuery = sQuery & " """ & sSMH & "received" & """, " sQuery = sQuery & " """ & sSMH & "references" & """, " sQuery = sQuery & " """ & sSMH & "relay-version" & """, " sQuery = sQuery & " """ & sSMH & "reply-by" & """, " sQuery = sQuery & " """ & sSMH & "reply-to" & """, " sQuery = sQuery & " """ & sSMH & "return-path" & """, " sQuery = sQuery & " """ & sSMH & "return-receipt-to" & """, " sQuery = sQuery & " """ & sSMH & "sender" & """, " sQuery = sQuery & " """ & sSMH & "sensitivity" & """, " sQuery = sQuery & " """ & sSMH & "subject" & """, " sQuery = sQuery & " """ & sSMH & "summary" & """, " sQuery = sQuery & " """ & sSMH & "thread-index" & """, " sQuery = sQuery & " """ & sSMH & "thread-topic" & """, " sQuery = sQuery & " """ & sSMH & "to" & """, " sQuery = sQuery & " """ & sSMH & "x-mailer" & """, " sQuery = sQuery & " """ & sSMH & "x-message-completed" & """, " sQuery = sQuery & " """ & sSMH & "x-message-flag" & """, " sQuery = sQuery & " """ & sSMH & "x-unsent" & """, " sQuery = sQuery & " """ & sSMH & "xref" & """ " sQuery = sQuery & " FROM SCOPE('shallow traversal of """ & strFolderURL & """')" sQuery = sQuery & " WHERE ""DAV:isfolder"" = False AND " sQuery = sQuery & """DAV:ishidden"" = False" sQuery = sQuery & "" sQuery = sQuery & "" ' Set request headers. oXMLHttp.setRequestHeader "Content-Type", "text/xml" oXMLHttp.setRequestHeader "Translate", "f" oXMLHttp.setRequestHeader "Depth", "0" oXMLHttp.setRequestHeader "Content-Length", "" & Len(sQuery) ' Send request. oXMLHttp.send sQuery If Err.Number <> 0 Then WScript.Echo "Error Sending Query" WScript.Echo Err.Number & ": " & Err.Description Set oXMLHttp = Nothing End If ' Load XML. Set oXMLDoc = oXMLHttp.responseXML 'WScript.Echo oXMLDoc.Text Set fs = CreateObject("Scripting.FileSystemObject") Set oFile = fs.CreateTextFile("c:\temp\testarea\leff.log", True) oFile.Write(oXMLDoc.Text) oFile.Close Set oXMLHREFNodes = oXMLDoc.getElementsByTagName("a:displayname") Set oRecord = oXMLDoc.getElementsbyTagName("d:datereceived") ' for DAV:href if nessesary could be accessed by ("a:href"), not now. WScript.Echo "For URL: [" & sUrl & "]" WScript.Echo ' Loop through the nodes. For iM = 0 to oRecord.Length - 1 WScript.Echo "Name: [" & oXMLHREFNodes.Item(iM).nodeTypedValue & "]" WScript.Echo "Date: [" & oRecord.Item(iM).nodeTypedValue & "]" Next WScript.Echo WScript.Echo "~~~~~~~~~~~~~~" WScript.Echo "Total found: " & oRecord.Length ' Clean up. Set oXMLDoc = Nothing Set oXMLHttp = Nothing End Sub