' Code: Dmitry Stremkouski
' Date: 11.12.2006
' License: GPL
' Usage: Configure and run
' example:
' cscript //nologo Inbox_ac.vbs
Dim serv1, serv2, usern1, suv1, suv1pw, url1, dateFilter
'/------------------------------------------\
'| Configuring Script Here. |
'|------------------------------------------|
'| |
'| Servers must be predefined ! |
'|------------------------------------------|
serv1 = "..." '|
serv2 = "..." '|
'|------------------------------------------|
'| |
'| Username, optionaly for test |
'|------------------------------------------|
usern1 = "..." '|
'|------------------------------------------|
'| |
'| Postmaster's login must be predefined |
'|------------------------------------------|
suv1 = "..." '|
'|------------------------------------------|
'| |
'| Postmaster's password must be predefined |
'|------------------------------------------|
suv1pw = "..." '|
'|------------------------------------------|
'| |
'| Filter date, over that messages stay |
'|------------------------------------------|
dateFilter = "2006-11-27T07:55:00Z" '|
'|------------------------------------------|
'| End of configuration |
'\------------------------------------------/
url1 = "http://" & serv1 & "/exchange/" & usern1 & "/"
DoXML
Public Function predateit(datetocon)
strDateTime = year(datetocon) & "-"
if (Month(datetocon) < 10) then strDateTime = strDateTime & "0"
strDateTime = strDateTime & Month(datetocon) & "-"
if (Day(datetocon) < 10) then strDateTime = strDateTime & "0"
strDateTime = strDateTime & Day(datetocon) & "Z-"
predateit = strDateTime
end Function
Public Sub DoXML
Dim objX, strR
Set objX = CreateObject("Microsoft.XMLHTTP")
objX.Open "PROPFIND", url1, FALSE, suv1, suv1pw
strR = ""
strR = strR & ""
strR = strR & ""
strR = strR & ""
objX.SetRequestHeader "Content-type:", "text/xml"
objX.SetRequestHeader "Depth", "0"
objX.send(strR)
set docback = objX.responseXML
set objX = Nothing
Dim objNodeList
Set objNodeList = docback.getElementsByTagName("d:inbox")
Set objNode = objNodeList.nextNode
ListIt(objNode.nodeTypedValue)
Set objNode = Nothing
End Sub
Public Sub ListIt(seUrl)
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
oXMLHttp.open "SEARCH", seUrl, False, suv1, suv1pw
If Err.Number <> 0 Then
WScript.Echo "Error opening DAV connection"
WScript.Echo Err.Number & ": " & Err.Description
Set oXMLHttp = Nothing
End If
sQuery = ""
sQuery = sQuery & ""
sQuery = sQuery & ""
sQuery = sQuery & "SELECT ""DAV:displayname"", ""DAV:href"", ""urn:schemas:httpmail:datereceived"" "
sQuery = sQuery & " FROM SCOPE('shallow traversal of """ & seURL & """')"
sQuery = sQuery & " WHERE ""DAV:isfolder"" = False AND "
sQuery = sQuery & " ""DAV:ishidden"" = False AND "
sQuery = sQuery & " ""urn:schemas:httpmail:datereceived"" < CAST(""" & dateFilter & """ as 'dateTime') "
sQuery = sQuery & " ORDER BY ""urn:schemas:httpmail:datereceived"" DESC"
sQuery = sQuery & ""
sQuery = sQuery & ""
oXMLHttp.setRequestHeader "Content-Type", "text/xml"
oXMLHttp.setRequestHeader "Translate", "f"
oXMLHttp.setRequestHeader "Depth", "0"
oXMLHttp.setRequestHeader "Content-Length", "" & Len(sQuery)
oXMLHttp.send sQuery
If Err.Number <> 0 Then
WScript.Echo "Error Sending Query"
WScript.Echo Err.Number & ": " & Err.Description
Set oXMLHttp = Nothing
End If
Set oXMLDoc = oXMLHttp.responseXML
Set oXMLHttp = Nothing
Set oXMLHREFNodes = oXMLDoc.getElementsByTagName("a:href")
Set oXMLDNNodes = oXMLDoc.getElementsByTagName("a:displayname")
Set oRecord = oXMLDoc.getElementsbyTagName("d:datereceived")
For iM = 0 to oRecord.Length - 1
MyMove = MoveOut(oXMLHREFNodes.Item(iM).nodeTypedValue, oXMLDNNodes.Item(iM).nodeTypedValue)
Next
Set oXMLDoc = Nothing
Set oXMLHREFNodes = Nothing
Set oXMLDNNodes = Nothing
Set oRecord = Nothing
End Sub
Public Function MoveOut(srcURLo,destNameo)
Dim objXo, strRo, url2
url2 = "http://" & serv2 & "/exchange/" & usern1 & "2/"
Set objXo = CreateObject("Microsoft.XMLHTTP")
objXo.Open "PROPFIND", url2 , FALSE, suv1, suv1pw
strRo = ""
strRo = strRo & ""
strRo = strRo & ""
strRo = strRo & ""
objXo.SetRequestHeader "Content-type:", "text/xml"
objXo.SetRequestHeader "Depth", "0"
objXo.send(strRo)
Set docbacko = objXo.responseXML
Set objXo = Nothing
Dim objNodeListo, destURLo, dPrefixo
Set objNodeListo = docbacko.getElementsByTagName("d:inbox")
Set objNodeo = objNodeListo.nextNode
dPrefix = predateit(now())
destURL = objNodeo.nodeTypedValue & "/" & destNameo
WScript.Echo destURL
Set req = CreateObject("Microsoft.xmlhttp")
Set req2 = CreateObject("Microsoft.xmlhttp")
req.Open "GET", srcURLo, false, suv1, suv1pw
req2.Open "PUT", destURL, false, suv1, suv1pw
req.setRequestHeader "Translate","f"
req.Send
req2.setRequestHeader "Destination", destURL
Set stm = createobject("ADODB.Stream")
stm.Open
msgstring = req.responseText
stm.type = 2
stm.Charset = "x-ansi"
stm.writetext msgstring,0
stm.Position = 0
stm.type = 1
req2.Send stm
Set stm = Nothing
Set req = Nothing
Set req2 = Nothing
Set objNodelisto = Nothing
End Function