Как получить все имена папок gmail с помощью ImapX lib?C # - PullRequest
1 голос
/ 24 марта 2011

Как получить все имена папок gmail с помощью ImapX lib?Я прочитал в http://hellowebapps.com/2010-02-09/imapx-net-library-to-manage-imap-folders/, но не нашел получить всю часть папки.

Ответы [ 3 ]

0 голосов
/ 05 мая 2011

Вы можете перебрать коллекцию 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 голосов
/ 08 июля 2017

Вот как:

        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;
                        }
                    }
                }
            }
        }
    }
0 голосов
/ 26 апреля 2011

вот как вы получаете список всех папок ...

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

затем используйте имя с:

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

обратите внимание, что имя папки чувствительно к регистру ...

...