2010-01-16 176 views
3

使用OpenPOP .net客户端从Gmail获取邮件。如何使用POP3从Gmail获取未读/新邮件?

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

目前,我得到原子数据源,然后通过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); 

     // ... 
    } 

有没有更好的方法来做到这一点?

我该如何设置未读邮件被读取?

回答

5

我怀疑你可以用pop3来做。根据我的理解,POP3不支持未读\不可见电子邮件的概念。应该由客户来跟踪已经向用户显示的消息,而哪些不是。

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

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

1

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

Outlook使用相同的策略。

相同Q How to retrieve only new emails using POP3 protocol

相关问题