问题
Can anyone tell me how I can get the number of unread items in my inbox from gmail using imap or something else and display it in a label in C# WinForms?
I tried using atom feeds, but never could get it
Here is what I want to look like, if it helps:

回答1:
You probably want to find all messages with the UNSEEN
flag set.
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;
回答2:
SOLVED
Here is the code i used with the ImapX component:
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;
}
i just had to covert the int to a string and show the string (unseen) in the button. Thanks to quantumSoup for pointing me in the right direction
来源:https://stackoverflow.com/questions/3539692/count-number-of-emails-in-gmail-using-imap