Vb.net 如何从POP3服务器检索最新的电子邮件?

Vb.net 如何从POP3服务器检索最新的电子邮件?,vb.net,pop3,Vb.net,Pop3,我最近在做一个项目,涉及连接到POP3服务器。我在使用CodeProject()中的这段C#,将它编译成了一个DLL,并在VB.NET中使用它 我已连接到我的Hotmail帐户(邮件不多),它似乎工作正常。之后,我连接到我的GMail帐户。。。我开始看到错误 POP3只能从收件箱中获取电子邮件。甚至当我自己编写程序来交叉检查问题时,我发现当我请求邮件数量时,GMail POP3服务器返回的值大约比实际收件箱大小小5倍 我的收件箱中有255封电子邮件??在线显示我的收件箱中有2414封电子邮件。

我最近在做一个项目,涉及连接到POP3服务器。我在使用CodeProject()中的这段C#,将它编译成了一个DLL,并在VB.NET中使用它

我已连接到我的Hotmail帐户(邮件不多),它似乎工作正常。之后,我连接到我的GMail帐户。。。我开始看到错误

POP3只能从收件箱中获取电子邮件。甚至当我自己编写程序来交叉检查问题时,我发现当我请求邮件数量时,GMail POP3服务器返回的值大约比实际收件箱大小小5倍

我的收件箱中有255封电子邮件??在线显示我的收件箱中有2414封电子邮件。 其次,我的主要问题是如何从POP3邮箱获取最新的电子邮件。我在这里收到的是一封ID为1的电子邮件!我想获取前20封电子邮件(最近发送到该帐户的邮件)

对于如何从POP3服务器获取最新的电子邮件而不是最旧的电子邮件,是否有解决办法?我还尝试连接到Hotmail POP3邮件服务器。“RETR 1”命令再次为我获取最旧的电子邮件,而不是最新的!任何已知的解决方法?

我想您的问题在这里得到了回答:“使用STAT命令的消息计数不正确”

【2016年6月30日更新:上述链接不一定有效,这说明了为什么只链接的答案不受欢迎……】


这些消息将成批提供。检索批后,重新连接以获取下一批。根据需要重复。

您可以使用imap ptotocol来检索GMAIL收件箱中的所有邮件,而不是使用pop3。

如果邮件1是最旧的。。猜猜最新的邮件将在哪里。我会向gmail提交一个支持请求,询问他们的pop3服务器是否可以在一次会话中处理255封以上的电子邮件。@Boo我知道如果1是最早的,那么第次邮件(框中的邮件总数)将是最新的。但它反映的邮箱大小是255。所以,即使我收到了第255封电子邮件,那也不是整个收件箱中最新的一封,对吗?嘿!谢谢你的支持。但是线程似乎没有给我正确的解决方案!它表示获取您获得的一批UID并注销服务器。重新连接并请求UID后,您将得到一批新的UID,从而继续UID列表。但是,当我在注销服务器并重新登录后输入命令时,我看到服务器转储回了相同的UID列表。有什么解决办法吗?我想你必须在注销和重新登录之前重新记录信息。你必须测试它。否则,您可能需要使用IMAP接口。嘿!我也试过了。。。但是运气不好,伙计!无论如何,谢谢你的帮助。为了帮助我,我会给你们一个投票权:)请让我知道你们是否找到了解决GMail POP3服务器问题的有效方法。另外请注意,在一般情况下,RETR并不意味着删除邮件,但服务器可能会实施某种“下载一次”策略——在这种情况下,它会成为现实。因此,根据RFC1939,UA(用户代理)必须发出DELE命令,然后成功退出,以确保消息不会再次出现在列表上。根据我在Yandex和Gmail POP3服务器上的实验,DELE命令有效地将消息标记为已读,但实际上不会从服务器上删除它们。可以通过web界面配置精确的行为。确实,IMAP4是POP3的替代品,并且是更复杂的协议。但问题在于POP3实现的特殊性,所以为什么要费心提出一些不相关的建议呢?