2011-03-24 39 views

回答

0

這裏是你如何讓所有的文件夾列表...

 FolderCollection folders = client.GetFolders(); 
     foreach (Folder myfolder in folders) 
     { 
      MessageBox.Show(myfolder.Name); 
     } 

然後使用該名稱:

ImapX.MessageCollection messages = client.Folders["Spam"].Search("ALL", true); 

注意,文件夾名稱是敏感的情況下...

0

您可以迭代SubFolder集合,並可以獲取所有這些gamail文件夾和他們的路徑。舉個例子:

var client = new ImapClient(...); 
client.Connection(); 
client.LogIn(...); 


foreach (var item in WalkFolderTree(client.Folders)) 
{ 

    Console.WriteLine(item.FolderPath); 
} 

client.LogOut(); 

你必須定製實現遍歷代碼,如:

public IEnumerable<Folder> WalkFolderTree(FolderCollection folders) 
{ 
    foreach (var item in folders) 
    { 
     if (item.HasChildren) 
     { 
      WalkFolderTree(item.SubFolder); 
     } 
      yield return item; 
    } 

} 

然後,它會列出所有的文件夾,如:

INBOX 
    ... 
    [Gmail] 
    [Gmail]/All Mail 
    [Gmail]/Drafts 
    [Gmail]/Sent Mail 
    [Gmail]/Spam 
    [Gmail]/Starred 
    [Gmail]/Trash 
0

方法如下:

 public List<string> getMailboxes(string emailAddress, string emailPassword) 
    { 
     var client = new ImapClient("imap.gmail.com", 993, true, true); 
     if (client.Connect()) 
     { 
      if (client.Login(emailAddress, emailPassword)) 
      { 
       //get all parent folers 
       var folders = client.Folders; 

       foreach (var parentFolder in folders) 
       { 
        //get parent folder path 
        var parentPath = parentFolder.Path; 

        //check if every parent folder has subfolder 
        if (parentFolder.HasChildren) 
        { 
         var subfolders = parentFolder.SubFolders; 
         foreach(var subfolder in subfolders) 
         { 
          var subPath = subfolder.Path; 
         } 
        } 
       } 
      } 
     } 
    } 
相關問題