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

3

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

我想知道如何只获取新的邮件?

目前,我通过获取atom feed,然后使用OpenPOP客户端获取所有在feed中的邮件(从第一封开始)。

    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

我怀疑您无法通过POP3实现。 据我了解,POP3不支持未读\未查看电子邮件的概念。 客户端应该跟踪已经向用户显示过的消息和尚未显示的消息。

您可以切换到使用IMAP协议访问Gmail。 请检查此链接,了解如何为您的Gmail账户打开它:开始使用Gmail的IMAP

现在,如果您正在使用C#,则有一些商业库可供IMAP使用,并且还有免费\开源的库:比如Codeproject上的这个库:使用C#的IMAP客户端库。 要获取未读信息,您必须为选择命令指定“unseen”标志。 这里是一个示例


1

您需要将每个邮件的UIDL存储在本地数据库中。当您想要检查新邮件时,可以从服务器检索UIDL并查看您是否已经在本地数据库中存在;如果没有,则表示这是一封新邮件。

Outlook也使用相同的策略。

相似问题:如何使用POP3协议仅检索新邮件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接