I’ve been using K-9 on my Android phone for email, and wanted to get emails as soon as they arrived without having to poll the server for them (using an IMAP account). K-9 has support for Exchange, but not sub-folders and not recent versions of Exchange – and not Zimbra Server.
Researching the clients turned up two: the often-recommended TouchDown (for $20) or the newer RoadSync (for $10). There are trials in the Android Market for both TouchDown (30 days) and for RoadSync (14 days). TouchDown is an independent company with a long history of supporting Exchange on Android; however, their user interface is not quite as user-friendly as one might want.
RoadSync is also a venerable company, but the Android client is new. The software is sold by DataViz, the people behind DocumentsToGo. The user interface is a joy to use.
Both TouchDown and RoadSync support sub-folders, which is a must for me. I handle email by sorting it extensively when it comes in, placing just about every email into a folder.
However, there is one interesting item: the search for the best Exchange support for me started with looking for “push” mail – that is, having the server notify me of new mail, and not waiting for a poll. IMAP now has the IMAP IDLE command. What does this mean? It means that IMAP will thus push mail to the client. Your IMAP server has to support the IDLE command, but if it does, you don’t need to run an Exchange client to get your email notifications.
If you want to know the technical details of the IMAP IDLE command, it is described in RFC2177 (from 1997!).
One more thing – since I’m using K-9 with the IMAP IDLE command, and have trials of TouchDown and RoadSync running – now every email I get instantly gives me three notifications! Woot!
I use Enhanced EMail ($10) to check my multiple Exchange Boxes (Mine is Zimbra, and a couple clients that require me to use their Exchange systems) and am very happy. The problem with EE is that it (as far as I can tell) cannot create new Calendar or Contact entries, while it can sync them, it cannot create them on the device.