slusarz  Tue, 24 May 2011 06:21:31 +0000

Modified page: http://wiki.horde.org/Project/HordeImapLib
New Revision:  1.6
Change log:  Flesh this out.  Brag a bit.

@@ -1,36 +1,47 @@
 [[toc]]

 + Horde IMAP Client library

-Create an abstracted interface to an IMAP server. Create a native-PHP driver which will allow us to control all access to the IMAP server to be able to potentially use all features that IMAP provides. +This library presents a fully abstracted interface to an IMAP server. It provides a native-PHP driver that is significantly faster, more feature-rich, and extensible as opposed to PHP's imap (c-client) extension.

-++ Bugs
+Additionally, the library allows for abstracted access to POP3 servers via a native-PHP driver.

-I'm sure there are bugs.
+C-client drivers for both IMAP and POP3 are also provided as proof-of-concept.

 ++ People

-Michael Slusarz is creating the library.
+Michael Slusarz created the library.

 ++ Description
-
-The library is stable. A test program exists to allow anyone to test the code on their IMAP server.
-
-A c-client driver exists that implements as much of the library as possible using the imap_*() functions, and uses the Socket (native PHP code) library to implement the rest.
-
-POP3 drivers exist that uses the c-client driver and PHP socket code (recommended) to implement the commands that a POP server supports.

The Socket library, which IMP 5.x uses for IMAP access, supports the following RFCs:

http://git.horde.org/co.php/framework/Imap_Client/lib/Horde/Imap/Client/Socket.php?rt=horde-git

Additionally, the class includes a UTF-8 to UTF7-IMAP converter, an IMAP mailbox sorter, and an abstracted caching library.

 The library requires PHP 5.2.0+.
+
+++ Features
+
+* Fast. Horde_Imap_Client is orders of magnitude faster than the PHP imap extension (benchmarks to come). + * The PHP imap extension produces tremendously inefficient IMAP queries. Horde_Imap_Client has been ruthlessly tuned to eliminate duplicate/unneeded queries. +* Memory efficient. Horde_Imap_Client handles message data (which can easily be 10+ MB) entirely within PHP temporary streams. No more than 2 MB of a large data objects is stored in memory at any time. +* Built-in caching. No need to muck around with caching message data; this is all handled internally. Further, Horde_Imap_Client uses Horde_Cache which means that a large variety of caching options are available to use - anything from temporary files, SQL databases, to memcache servers can be used to cache this data.
+* Standards compliant. Horde_Imap_Client is strictly RFC compliant.
+ * Additionally, Horde_Imap_Client implements important core functionality that may not be available on your server. Threading and **FULL** sorting (not a limited subset) are always available, regardless of whether your IMAP server supports the THREAD/SORT extensions. +* Liberally commented code. It may not be perfect. But at least we try to give you some idea of what's going on in there. +* Easy debugging. Full IMAP logs are available via a single configuration option.
+* Advanced features.
+ * Horde_Imap_Client is the **ONLY** open-source PHP library that supports the CONDSTORE (http://tools.ietf.org/html/rfc4551 RFC 4551) and QRESYNC (http://tools.ietf.org/html/rfc5162 RFC 5162) IMAP extensions. These extensions ensure that changes made by other mail user agents (MUAs) are automatically synchronized. Without CONDSTORE, it is IMPOSSIBLE to cache flag information so loading a mailbox on every page load requires parsing every message for flag changes. Additionally, these extensions are absolutely essential to correctly implement an AJAX mail interface that properly synchronizes changes. + * Full ACL support, and provides abstracted management of the ACLs so that a developer does not need to worry whether the server supports "old" style ACLs (http://tools.ietf.org/html/rfc2086 RFC 2086) or "new" style ACLs (http://tools.ietf.org/html/rfc4314 RFC 4314). + * Supports, among others, (http://tools.ietf.org/html/rfc3502 MULTIAPPEND), (http://tools.ietf.org/html/rfc4469 CATENATE), (http://tools.ietf.org/html/rfc4315 UIDPLUS), (http://tools.ietf.org/html/rfc4731 ESEARCH), (http://tools.ietf.org/html/rfc5256 THREAD/SORT), (http://tools.ietf.org/html/rfc5267 ESORT), and (http://tools.ietf.org/html/rfc5819 LIST-STATUS) - most of these extensions were specifically designed for (http://tools.ietf.org/html/rfc5550 disconnected clients) and vastly reduce the amount of bandwidth and processing need to keep the client synchronized with the server. + * Horde_Imap_Client was (http://lists.andrew.cmu.edu/pipermail/imapproxy-info/2008-October/000771.html responsible) for features added to (http://imapproxy.org/ imapproxy) to eliminate the need to re-establish the session every time a user accesses the server. Horde_Imap_Client is the **ONLY** open-source PHP library that leverages these features.

 ++ Resources

The library code can be found at http://git.horde.org/horde-git/-/browse/framework/Imap_Client/ +Developer documentation (API) can be found at http://dev.horde.org/api/framework/Imap_Client/

 ----
 Back to the ((Projects|Project List))

__
commits mailing list
Frequently Asked Questions: http://horde.org/faq/
To unsubscribe, mail: [email protected]

Reply via email to