Как я могу получить непрочитанные / новые сообщения из Gmail, используя POP3? - PullRequest
3 голосов
/ 16 января 2010

Использование клиента OpenPOP .net для получения сообщений из Gmail.

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

В настоящее время я получаю фид атомов, а затем получаюстолько писем, сколько в канале с клиентом OpenPOP (начиная с первого).

    GmailAtomFeed feed = new GmailAtomFeed("user", "pass");
    feed.GetFeed();

    int unread = feed.FeedEntries.Count;

    POPClient client = new POPClient("pop.gmail.com", 995, "user", "pass", AuthenticationMethod.USERPASS, true);



    for (int i = 0; i < unread; i++)
    {
        Message m = client.GetMessage(i, false);

        // ...
    }

Есть ли лучший способ сделать это?

И как установить непрочитанные сообщениячитать?

Ответы [ 2 ]

5 голосов
/ 16 января 2010

Я сомневаюсь, что вы можете сделать это с pop3. Насколько я понимаю, POP3 не поддерживает понятие непрочитанного \ невидимого электронного письма. Клиент должен отслеживать сообщения, которые уже были показаны пользователю, а какие нет.

Что вы можете сделать, это переключиться на использование протокола IMAP для доступа к Gmail. Проверьте эту ссылку, чтобы узнать, как включить ее для учетной записи Gmail Начало работы с IMAP для Gmail .

Теперь, если вы используете c #, есть некоторые коммерческие библиотеки для IMAP, и есть бесплатные \ opensource: как в codeproject: Клиентская библиотека IMAP с использованием C # . Чтобы получить невидимые сообщения, вам нужно указать флаг «невидимый» для команды выбора. Вот пример

1 голос
/ 26 апреля 2012

Вы должны хранить UIDL каждого письма в локальной базе данных. Когда вы хотите проверить наличие новой почты, вы извлекаете UIDL s на сервере и проверяете, есть ли они в вашей локальной базе данных; если нет - это новая почта.

Outlook использует ту же стратегию.

тот же Q Как получать только новые электронные письма, используя протокол POP3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...