2016-08-03 4 views
1

Wie ist es möglich, die Ordnerstruktur eines bestimmten Benutzers zu erhalten, ohne das ExchangeService mit Passwort zu verwenden?Zugriff auf das Postfach eines anderen Benutzers, um seine Ordnerstruktur zu erhalten

Ich habe sicherlich die Rechte, die Informationen zu lesen, kann aber keinen Weg finden, dies zu tun. Ich bin auf der Suche nach so etwas wie das:

Mailbox userMailbox = new Mailbox(user); 

WellKnownFolderName userFolderName = userMailbox.WellKnownFolderName.MsgFolderRoot; 

FindFoldersResults findFoldersResults = exchangeService.FindFolders(userFolderName, new FolderView(int.MaxValue)); 

Aber eigentlich kann ich nicht auf andere WellKnowFolderNames zugreifen oder direkt an seine Ordner.

bearbeiten: Ich habe einen neuen Ansatz hatte, aber leider hat es keine Produkte zurück:

// Create mailbox for user 
Mailbox mailbox = new Mailbox(user); 

// Create a searchfolder to verify the used folder id is the same like the given folder id 
SearchFilter.IsEqualTo folderIdFilter = new SearchFilter.IsEqualTo(ItemSchema.Id, folderId); 

// Create new folder id 
FolderId usersFolderId = new FolderId(WellKnownFolderName.Root, mailbox); 

// Find items with search criteria 
itemResult = getExchangeService().FindItems(usersFolderId, folderIdFilter, viewBase); 

Antwort

2
itemResult = getExchangeService().FindItems(usersFolderId, folderIdFilter, viewBase); 

nur die Angebote im Root-Ordner zugreifen würden, die für die meisten Briefkästen gibt es nicht sei alles da. Alles, was Sie tun müssen, ist die Verwendung der FolderId Überladung und der FindFolders zB

 FolderId RootFolder = new FolderId(WellKnownFolderName.MsgFolderRoot, "[email protected]"); 
     FolderView FolderVw = new FolderView(1000); 
     FolderVw.Traversal = FolderTraversal.Deep; 
     FindFoldersResults findFoldersResults = null; 
     do 
     { 
      findFoldersResults = service.FindFolders(RootFolder, FolderVw); 
      foreach (Folder mbFolder in findFoldersResults) 
      { 
       Console.WriteLine("Processing Folder " + mbFolder.DisplayName); 
      } 
      FolderVw.Offset += findFoldersResults.Folders.Count; 
     } while (findFoldersResults.MoreAvailable); 
+0

Vielen Dank, das hat gut funktioniert! Wissen Sie wahrscheinlich, wie Sie den gleichen Prozess zum Abrufen aller Elemente eines bestimmten Benutzers ausführen? Das Problem ist in dieser Situation, ich kann die FolderId nicht auf das Postfach festlegen, da ich eine bestimmte FolderId verwenden muss, um alle Elemente in diesem Ordner eines bestimmten Benutzers zu finden. – Zumarta

+0

Wenn Sie alle Elemente in einer Mailbox abrufen möchten, ist der beste Ansatz, die Elemente in jedem Ordner aufzuzählen (mit findItems), z. B. im obigen Beispiel etwas in die Foreach-Schleife einzufügen. Paging wird Sie auf die Verarbeitung von Elementen in 1000er-Schritten beschränken. Wenn Sie nur nach einem Element in einer Mailbox suchen möchten, kann die Ediscovery in 2013 und darüber verwendet werden, um ein Element oder Elemente in einem Postfach zu finden, die die Suchkriterien erfüllen https://msdn.microsoft.com/en-us/library/office/jj190897(v=exchg.150).aspx –

+0

Danke, ich kann das an einem anderen Punkt verwenden, aber was ich anderes meinte: Ich habe eine folderId in einem Mailbox und möchte alle Artikel, die sich in diesem Postfach befinden, abrufen. Ich weiß nicht, ob alle Ordner-IDs global eindeutig sind, dann könnte ich einfach nach diesem Ordner suchen und seine Elemente abrufen. Aber sind Ordner-IDs in allen Postfächern eindeutig? – Zumarta

Verwandte Themen