有没有办法只从邮件服务器获取新的电子邮件(例如,当你在本地存储提取的电子邮件时)而不是取出所有这些电子邮件?
我想我可以用5个字符串来获取电子邮件,比较一下,例如,最后一封电子邮件(或其来自Pop3Client.GetMessageUid()
的Uid)的哈希值与所提取的电子邮件的哈希值,但我不确定是否这是最好,最可靠的方式。我认为这会浪费带宽或用多个请求轰炸服务器。
协议是否允许指定一个时间点(使用日期,最后一次电子邮件哈希或其他),之后它应该返回电子邮件?
目前,我正在使用OpenPop.NET OpenPop.Pop3.Pop3Client
。
修改
我在这里找到了一个例子: http://hpop.sourceforge.net/exampleDownloadUnread.php 虽然它不能100%满足我的需求(因为它获得了可能太多的所有UID),但这是一个很好的起点。
基本上,我想要做的就是这个IMAP样本通过比较UID做了什么:
http://www.limilabs.com/blog/get-new-emails-using-imap
编辑2
我发现了类似的问题,但它也提出了检索所有UID的方法:
答案 0 :(得分:2)
无论你做什么,你都需要下载所有的UID,因为你需要将它们与你已经下载的(在某种UID日志中)进行比较,以及拥有新的UID。消息,以便您可以记录它们以便在下次连接时进行比较。
但是,应该注意的是,并非所有POP3服务器都支持UIDL命令(毕竟它是扩展名),因此如果您的代码要用于各种POP3服务器,则必须处理接着就,随即。你如何处理它取决于你,但我相信我过去的方法是md5sum集合标题(尽管不是全部,因为一些POP3服务器可能会添加或修改标题,如X-Status或Status或一些自定义标题)。你可以通过哈希收到的标题来逃脱。