I am writing a cross-platform c++ application that needs to connect to Exchange servers and download mails using ActiveSync.
Is there any library available for ActiveSync (preferably open-source)?
I can't use Windows APIs as they won't run in Linux & Mac.
By Jason Johnston. Exchange ActiveSync is a collection of protocols that enables mobile devices to synchronize and exchange messaging objects such as email, contacts, or calendar items with a server.
ActiveSync is a client protocol that lets users synchronize their Exchange mailbox with a mobile device. By default, ActiveSync is enabled on new user mailboxes. Disabling ActiveSync on a mailbox prevents the user from synchronizing their mailbox with a mobile device (by using ActiveSync).
Starting with Windows Vista, ActiveSync has been replaced with the Windows Mobile Device Center, which is included as part of the operating system.
I used to work with the SynCE project on supporting Windows Mobile devices connected to desktop Linux machines so can offer a few pointers.
Do you mean ActiveSync or AirSync? AirSync is the protocol that used over the air and by ActiveSync to actually shift the data, ActiveSync is the whole stack for syncing a WinMo device connected to your computer. SynCE is the only open source "full stack" equivalent to ActiveSync that I know of, from driver to AirSync to GUI's and integration with OpenSync, and I don't know any open source projects that present themselves as a WinMo device to ActiveSync.
I don't know of any C or C++ implementations of AirSync, but I believe that the Samba and OpenChange teams have made good progress at supporting Exchange servers natively. About a year and a half ago I was told that even supporting the HTTP(s) transport wasn't far away in terms of work needed (but i'm not sure if its been a priority).
While not in C++ and while not even a client library, the SynCE project has open source python code which might be a useful reference if another library cannot be found.
Here is an example of a push mail server that was written by one of the SynCE developers: SynCE Airmail
And the main sync engine can be found here: SynCE SyncEngine
Within that code, I think SyncEngine/airsync.py will be most useful to you.
Digging around the SynCE wiki http://www.synce.org and their mailing list archive is a good way of finding out about problems encountered and surprising details about what the protocol is and isnt sensitive about.
You may find http://libwbxml.opensync.org useful - after the wbxml layer has been decoded AirSync is just XML passing.
And finally, Microsoft do provide documentation for the protocol:
Z-Push might provide you with the start you need.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With