web-dev-qa-db-fra.com

Exchange Web Service FolderId pour un nom de dossier inconnu

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.

25
marcwenger

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);
    }
}
36
andreaspfr

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.

16
Ethan Reesor

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 .

6
Henning Krause