Detta script tar fram namnet på ”Min_Exchange_Folder”
I den foldern finns det under mappar som i sin tur har undermappar.
Hur kan jag ändra scriptet så den loopar namnet (skriver ut namnet) på alla foldrar/underfoldrar som ligger i min ”Min_Exchange_Folder”?
strProfileInfo = strServer & vblf & strMailbox
Set objSession = Server.CreateObject("MAPI.Session")
objSession.Logon , , , False, , True, strProfileInfo
Set objInfoStores = objSession.InfoStores
For i = 1 To objInfoStores.Count
If objInfoStores.Item(i)= "Public Folders" Then
Set objInfoStore=objInfoStores.Item(i)
Exit For
End If
Next
bstrPublicRootID = objInfoStore.Fields.Item( &H66310102 ).Value
Set objTopFolder = objSession.GetFolder(bstrPublicRootID, objInfoStore.ID)
Set objFolders = objTopFolder.Folders
Set objFolder = objFolders.GetFirst()
Do Until objFolder.Name = "Min_Exchange_Folder"
Set objFolder=objFolders.GetNext()
Response.Write(objFolder.Name)
Loop
Du får göra en funktion som har en folder-object som inparameter.
Denna funktion ska oxå vara rekursiv, dvs anropa sig själv:
Sub ListFolders(ByVal oFolders)
Dim folder
For Each folder IN oFolders
Response.Write folder.Name & "<BR>"
'## -- låt funktionen anropa sig själv för att hämta undermappar --
Call ListFolders(folder.Name)
Next
End Sub
Sub ListFolders(ByVal oFolders)
Dim folder
For Each Folder IN oFolders
'## --skriv ut aktuell folder --
Response.Write Folder.Name
'## -- låt denna sub anropa sig själv (rekursiv) för att komma åt under-kataloger --
Call ListFolders(Folder)
Next
End Sub
strProfileInfo = strServer & vblf & strMailbox
Set objSession = Server.CreateObject("MAPI.Session")
objSession.Logon , , , False, , True, strProfileInfo
Set objInfoStores = objSession.InfoStores
For i = 1 To objInfoStores.Count
If objInfoStores.Item(i)= "Public Folders" Then
Set objInfoStore=objInfoStores.Item(i)
Exit For
End If
Next
bstrPublicRootID = objInfoStore.Fields.Item( &H66310102 ).Value
Set objTopFolder = objSession.GetFolder(bstrPublicRootID, objInfoStore.ID)
Set objFolders = objTopFolder.Folders
Set objFolder = objFolders.GetFirst()
Call ListFOlders(objFolders)
Du får testa dig fram.
Nu kan du se hur en rekursiv sub/funktion fungerar ....... genom att anropa sig själv med ett annat objekt från kollektionen (objFolders)
Set objSession = Server.CreateObject("MAPI.Session")
objSession.Logon "User", "", True
With objSession.Inbox.Folders
Set objFolder = .GetFirst
Do While (Not objFolder = Nothing)
Response.Write objFolder.Name & "<br />"
Set objFolder = .GetNext
Loop
Set objFolder = Nothing
End With