ルートの子(受信トレイではない)であるExchangeメールボックスにフォルダーがあります。
EWSマネージAPIを使用してそのようなフォルダーのIDを取得するにはどうすればよいですか?
私が見つける例は、WellKnownFolderNamesに関連するものだけです。
FindFolders
メソッドを使用してすべてのフォルダを検索できます。使用する WellKnownFolderName.Root
受信トレイのすべてのフォルダを表示します。 FolderView
を作成し、表示するプロパティを追加する必要があります(たとえば、ID
およびDisplayName
)。トラバーサルをDeep
に設定して、すべてのフォルダーを検索します。私の例では、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);
}
}
少し遅れましたが、以下は私がフォルダを見つけるために使用したものです。
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);
編集:どうやら私のコードはネストされた階層では機能しませんでした。 cookiemonsterの提案された編集に従って、行を追加しました。
7プライの答えは有効ですが、望ましくない結果になる可能性があります。
次の構造があるとします。
Root
--Folder A
----Test
--Folder B
----Test
彼が提供したコードは、両方のテストフォルダーを返します。
パスがわかっている場合(フォルダーB /テストなど)、フォルダーパスを繰り返し取得できます。
このリンクの私のメソッドSetFolderHomePage
を参照してください: http://www.infinitec.de/post/2011/10/05/Setting-the-Homepage-of-an-Exchange-folder- using-the-EWS-Managed-API.aspx 。