2011-10-27 23 views

Trả lời

22

Bạn có thể tìm tất cả Thư mục bằng phương pháp FindFolders. Sử dụng WellKnownFolderName.Root nó sẽ hiển thị tất cả các thư mục của hộp thư đến của bạn. Bạn phải tạo một FolderView thêm một thuộc tính mà bạn muốn xem (ví dụ ID và DisplayName). Đặt bộ đệm xuống sâu để tìm tất cả các thư mục của bạn. Trong ví dụ của tôi, tôi đang tìm thư mục có tên hiển thị là "Thử nghiệm"

//set Server 
     ExchangeService server = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 
     server.UseDefaultCredentials = true; 
     string configUrl = @"https://yourServerAddress.asmx"; 
     server.Url = new Uri(configUrl); 
     //SetView 
     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); 
     } 
5

Câu trả lời bảy lớp hợp lệ, nhưng có thể dẫn đến kết quả không mong muốn.

Giả sử bạn có cấu trúc này:

gốc

--Folder Một

---- Kiểm tra

--Folder B

---- Kiểm tra

Mã mà anh cung cấp sẽ trả lại cả thư mục kiểm tra.

Nếu bạn biết đường dẫn (như Thư mục B/Thử nghiệm), bạn có thể nhận được đường dẫn thư mục lặp lại. Xem phương pháp của tôi SetFolderHomePage trong liên kết này: http://www.infinitec.de/post/2011/10/05/Setting-the-Homepage-of-an-Exchange-folder-using-the-EWS-Managed-API.aspx.

9

Một hơi muộn, nhưng sau đây là những gì tôi sử dụng để tìm thư mục của tôi:

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); 

Sửa: Rõ ràng mã của tôi đã không làm việc trên heirarchies lồng nhau. Tôi đã thêm một dòng theo chỉnh sửa được đề xuất của cookiemonster.

+2

Có vấn đề gì với câu trả lời của tôi không? Một bình luận sẽ giúp tôi biết tại sao nó lại bị bỏ phiếu ... –

+0

sửa lỗi cho các thư mục lồng nhau là gì? – sofsntp

+0

@faisantp 'view.Traversal = FolderTraversal.Deep'; –

Các vấn đề liên quan