如何使用POP3从Gmail获取未读/新邮件?

时间:2010-01-16 13:50:20

标签: c# email gmail pop3

使用OpenPOP .net客户端从Gmail获取邮件。

我想知道如何才能获得新消息?

目前,我获取原子Feed,然后获取与Feed一起使用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 个答案:

答案 0 :(得分:5)

我怀疑你能用pop3做到这一点。根据我的理解,POP3不支持未读/看不见的电子邮件的概念。应该由客户端跟踪已经向用户显示的消息以及未显示的消息。

您可以切换到使用IMAP协议访问gmail。请查看此链接,了解如何为您的Gmail帐户Getting started with IMAP for Gmail启用该帐户。

现在,如果您正在使用c#,那么IMAP有一些商业库,并且有免费的\ opensource:像codeproject上的这个:IMAP Client library using C#。要获取看不见的消息,您需要做的是为select命令指定“unseen”标志。这是一个example

答案 1 :(得分:1)

您必须将每封电子邮件的UIDL存储在本地数据库中。当您要检查新邮件时,检索服务器上的UIDL,看看您是否已经在本地数据库中;如果没有,这是一封新邮件。

Outlook使用相同的策略。

同样的问How to retrieve only new emails using POP3 protocol