繁体   English   中英

OpenPop.NET:Pop3Client:如何仅获取新电子邮件

[英]OpenPop.NET : Pop3Client : How to get only the new emails

有没有一种方法可以仅从邮件服务器中提取新电子邮件(例如,当您在本地存储所提取的电子邮件时),而不是全部提取新电子邮件?

我想我可以Pop3Client.GetMessageUid() 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的方法:

如何使用POP3协议仅检索新电子邮件

无论您做什么,都需要下载所有UID,因为您需要将它们与已经下载的UID(在某种UID日志中)进行比较,并拥有新消息的UID,以便您可以记录它们以与下次连接进行比较。

但是,应该注意的是,并不是所有的POP3服务器都支持UIDL命令(毕竟是扩展),因此,如果您的代码打算与各种POP3服务器一起使用,则必须对其进行处理。 您如何处理它取决于您,但是我认为我过去的方法是md5sum头的集合(尽管不是全部),因为某些POP3服务器可能会添加或修改头,例如X-Status或Status或一些自定义标头)。 您可能只需要对Received标头进行哈希处理就可以摆脱困境。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM