我正在寻找可以支持异步I / O的IMAP客户端库或解析器。最终目标是我可以让专用线程执行套接字I / O(通过poll()循环或类似)并且可以将数据发送到等待的客户端/解析器,因为它变得可用。我见过的所有代码/库(java.mail,Python的imaplib,Thunderbird的C ++ IMAP客户端,C,C ++中的许多随机代码)似乎都遵循传统的阻塞,每线程一个线程的方法,对我不起作用。
我理想的客户端或库的行为与https://github.com/ry/http-parser非常相似,因为I / O行为不会受IMAP位的影响。相反,IMAP库将处理缓冲区/字符串,调用者将管理I / O.
到目前为止,我见过的唯一可能是libcurl。但是,我不确定API是否会起作用,并希望在走太远之前或发明我自己的解决方案之前先考虑其他可能性。
我愿意用任何编程语言考虑库。
答案 0 :(得分:1)
Twisted(http://twistedmatrix.com/)有一个异步IMAP4客户端:twisted.mail.imap4.IMAP4Client
人们有时会说这个协议很难实现,因此实施质量可能会成为一个问题。已解散的Chandler项目使用了扭曲的IMAP4客户端,其源代码包含评论“此功能将在不久的将来得到增强,成为更强大的IMAP客户端”。
答案 1 :(得分:-2)
对于这种事情我使用node.js获得了很好的结果。如果要收听很多开放的套接字,你需要调整一些linux设置,以增加打开文件描述符数量的限制,但效果很好。