webForumDet fria alternativet

Public Folders i Exchange

ASPur ASP

7 svar · 274 visningar · startad av Arne

Medlem sedan maj 2000267 inlägg
Frågan#1

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
Medlem sedan nov. 20017 144 inlägg
Medlem sedan maj 2000267 inlägg
#3

help

Jag kom ett steg längre med koden:

 

   Set objSubFolder = objFolder
		For Each objSubFolder in objFolders
			Response.write objSubFolder.name & "<br>"
		next

Men hur får jag fram mapparna i objSubFolder och mapparna i den.

Min önskan är att lista objFolder och direkt nästa objSubFolder ock så vidare, tills jag kommit ner 4 nivåer

Sedan börja på nästa objSubFolder ......

Så det liknar i stort sett mappstrukturen i urforskaren om du öppnar alla plus.

Går detta eller ska jag slänga in handuken?

Medlem sedan mars 20002 836 inlägg
#4

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

ngt sådant ....

du kan även från denna sida komma vidare: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wss/wss/_exch2k_web_storage_system_search_folders.asp

cya,
PatrikB

Medlem sedan maj 2000267 inlägg
#5

Anropa sig själv?

Oj, det lät avancerat

Sökte på msdn men fann inget som kunde lätta upp mina funderingar.

Skulle uppskatta väldans för ett exempel på hur:
"låt funktionen anropa sig själv för att hämta undermappar"

skulle tänkas kunna se ut (snälla:-)

Medlem sedan mars 20002 836 inlägg
#6
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)

cya,
PatrikB

Medlem sedan mars 20002 836 inlägg
#7

Hittade lite kod på msdn.microsoft.com

Kanske kandetta ge ngt:

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

"utvecklade" koden från länken ovan lite .... ;)

cya,
PatrikB

Medlem sedan maj 2000267 inlägg
#8

tack

Tack för att du försökt hjälpa mig, men jag får tyvärr inte till det.
Jag får ge mig:-(

138 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)