9


5

IMAPを使用してGmailのメールの数を数える

imapなどを使用してGmailから受信トレイ内の未読アイテムの数を取得し、C#WinFormsのラベルに表示する方法を教えてください。

アトムフィードを使用してみましたが、取得できませんでした

役立つ場合は、次のようになります。

画像:https://i.stack.imgur.com/eB53v.png [Inbox(1)]

2 Answer


9


解決済み

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を文字列に変換し、ボタンに文字列(見えない)を表示する必要がありました。 私を正しい方向に向けてくれたquantumSoupに感謝します


6


おそらく、 `UNSEEN`フラグが設定されたすべてのメッセージを検索する必要があります。

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

List unseenList = imap.SearchFlag(Flag.Unseen);

// now you can get the count from unseeList
int unread = unseenList.Count;