J'ai un dossier dans une boîte aux lettres Exchange qui est un enfant de la racine (pas la boîte de réception).
Comment obtenir l'ID d'un tel dossier à l'aide de l'API managée EWS?
Seuls les exemples que je trouve sont ceux relatifs à WellKnownFolderNames.
Vous pouvez trouver tous les dossiers avec la méthode FindFolders
. Utilisation WellKnownFolderName.Root
pour afficher tous vos dossiers de votre boîte de réception. Vous devez créer un FolderView
et ajouter les propriétés que vous souhaitez voir (ID
et DisplayName
par exemple). Définissez la traversée sur Deep
pour trouver tous vos dossiers. Dans mon exemple, je recherche le dossier avec le DisplayName
"Test".
// set Server
ExchangeService server = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
server.UseDefaultCredentials = true;
string configUrl = @"https://yourServerAddress.asmx";
server.Url = new Uri(configUrl);
// set View
FolderView view = new FolderView(100);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
view.PropertySet.Add(FolderSchema.DisplayName);
view.Traversal = FolderTraversal.Deep;
FindFoldersResults findFolderResults = server.FindFolders(WellKnownFolderName.Root, view);
// find specific folder
foreach (Folder f in findFolderResults)
{
// show FolderId of the folder "Test"
if (f.DisplayName == "Test")
{
Console.WriteLine(f.Id);
}
}
Un peu tard, mais voici ce que j'ai utilisé pour trouver mon dossier:
var view = new FolderView(1);
view.Traversal = FolderTraversal.Deep;
var filter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "Rejected");
var results = Service.FindFolders(WellKnownFolderName.Root, filter, view);
if (results.TotalCount < 1)
throw new Exception("Cannot find Rejected folder");
if (results.TotalCount > 1)
throw new Exception("Multiple Rejected folders");
Rejected = Folder.Bind(Service, results.Folders.Single().Id);
Edit: Apparemment, mon code ne fonctionnait pas sur les héritières imbriquées. J'ai ajouté une ligne selon la modification suggérée par cookiemonster.
La réponse de sept plis est valide, mais peut conduire à des résultats indésirables.
Supposons que vous ayez cette structure:
Root
--Folder A
----Test
--Folder B
----Test
Le code qu'il a fourni renverrait les deux dossiers de test.
Si vous connaissez le chemin (comme le dossier B/Test), vous pouvez obtenir le chemin du dossier de manière itérative.
Voir ma méthode SetFolderHomePage
dans ce lien: http://www.infinitec.de/post/2011/10/05/Setting-the-Homepage-of-an-Exchange-folder- using-the-EWS-Managed-API.aspx .