How deep have you gone with the library and with an imap client implementation? There is definitely a lot of variation from imap server to imap server. Things come back with weird and broken encodings sometimes (the server will tell you that a message is unicode and then return invalid unicode), commands that seem to be read-only will have persistent effects, etc. IMAP is nowhere near as nice to work with as its standard and interface imply.
Gmail IMAP's IDLE support is broken (probably intentionally). It will report new messages, but it won't report changes to the number of unread messages (or which messages).
This means your clients don't automatically update read message stats, which is a pain (most surprising thing I noticed moving to Gmail from hosting IMAP on my home server).
> IMAP is nowhere near as nice to work with as its standard and interface imply.
I prefer to say that it is just as horribly awful as it's abomination of a ill conceived standard implies.
Pretty much "everything" is wrong about IMAP, from allowing the use of message sequence numbers that can change under you, to the horribly overcomplicated support for addressing mime parts, to the overcomplicated grammar...
It uses imaplib from the Python standard library. Doesn't look scary to me.