Какие существуют асинхронные или инкрементные клиенты или анализаторы IMAP? - PullRequest
1 голос
/ 22 апреля 2011

Я ищу клиентскую библиотеку IMAP или анализатор, который может поддерживать асинхронный ввод-вывод.Конечная цель заключается в том, чтобы я мог иметь выделенный поток (ы) для выполнения сокетного ввода-вывода (через цикл poll () или аналогичный) и мог отправлять данные ожидающим клиентам / анализаторам, когда они становятся доступными.Весь код / ​​библиотеки, которые я видел до сих пор (java.mail, Python's imaplib, клиент Thunderbird C ++ IMAP, многие случайные в C, C ++), похоже, следуют традиционному подходу блокирования, один поток на сокет, которыйне будет работать для меня.

Мой идеальный клиент или библиотека будут вести себя так же, как https://github.com/ry/http-parser в том смысле, что поведение ввода-вывода не будет определяться битами IMAP.Вместо этого библиотека IMAP будет работать с буферами / строками, а вызывающая сторона будет управлять вводом / выводом.

Единственная возможность, которую я видел до сих пор, - это libcurl.Но я не уверен, что API будет работать, и хочу посмотреть на другие возможности, прежде чем идти слишком далеко по этому пути или изобретать свое собственное решение.

Я открыт для рассмотрения библиотек на любом языке программирования.

Ответы [ 2 ]

1 голос
/ 22 апреля 2011

Twisted (http://twistedmatrix.com/) имеет асинхронный клиент IMAP4: twisted.mail.imap4.IMAP4Client

Люди иногда говорят, что этот протокол сложно реализовать, поэтому качество реализации может быть проблемой.В несуществующем проекте Chandler использовался скрученный клиент IMAP4, а его исходный код содержит комментарий «В ближайшее время эта функциональность будет расширена, чтобы стать более надежным клиентом IMAP».

0 голосов
/ 13 июня 2014

У меня были отличные результаты с node.js для такого рода вещей.Если вы слушаете много открытых сокетов, вам нужно настроить некоторые параметры linux, чтобы увеличить ограничения на количество дескрипторов открытых файлов, но это прекрасно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...