Подсчитайте количество писем в gmail с помощью IMAP

Может ли кто-нибудь сказать мне, как я могу получить количество непрочитанных элементов в моем почтовом ящике из gmail, используя imap или что-то еще, и отобразить его на метке в C # WinForms?

Я пытался использовать Atom Feeds, но так и не смог его получить.

Вот как я хочу выглядеть, если это поможет:

Входящие(1)


person Shane121    schedule 22.08.2010    source источник
comment
Пожалуйста, удалите ответ из вопроса и опубликуйте его как фактический ответ. Спасибо!   -  person Timwi    schedule 23.08.2010


Ответы (2)


Возможно, вы захотите найти все сообщения с установленным флагом UNSEEN.

Imap imap = new Imap();
/* connect, login, etc. */
imap.Connect(...);
/* fill login and select folder code */

List<long> unseenList = imap.SearchFlag(Flag.Unseen);

// now you can get the count from unseeList
int unread = unseenList.Count;
person quantumSoup    schedule 22.08.2010
comment
Не могли бы вы рассказать немного больше, я совершенно новичок в программировании - person Shane121; 22.08.2010
comment
Спасибо за помощь, отлично сработало, так как бы я показал это на ярлыке? - person Shane121; 22.08.2010
comment
Поправьте меня, если я ошибаюсь: вам нужно указать ссылку на Mail.dll: lesnikowski.com/mail - person Pawel Lesnikowski; 25.10.2011
comment
Не могли бы вы сказать мне, где вы можете получить этот класс Imap. Есть ли какая-нибудь библиотека .NET для Imap? - person Pritam Karmakar; 13.02.2012

РЕШЕНО

Вот код, который я использовал с компонентом ImapX:

 ImapX.ImapClient client = new ImapX.ImapClient("imap.gmail.com", 993, true);
        bool result = false;

        result = client.Connection();
        if (result)
            MessageBox.Show("Connection Established");

        result = client.LogIn(textBox1.Text, textBox2.Text);
        if (result)
        {
            MessageBox.Show("Logged in");
            ImapX.FolderCollection folders = client.Folders;
            ImapX.MessageCollection messages = client.Folders["INBOX"].Search("UNSEEN", true); //true - means all message parts will be received from server

            int unread = messages.Count;
            string unseen = unread.ToString();
            button1.Text = unseen;
        }

мне просто нужно было преобразовать int в строку и показать строку (невидимую) на кнопке. СпасибоQuantSoup за то, что указал мне правильное направление

person Shane121    schedule 30.08.2010
comment
Если указанный выше URL не сработал, можно попробовать использовать новую версию с imapx.codeplex.com. - person Evereq; 12.02.2013