I wrote an entry a few months back titled SMS to Android - get my email!. That was in the days before I knew about imap idle, and before a version of k9mail was released with support for push imap using imap idle.
Back in October of last year I wrote two entries (here and here) about my quest to make my HTC Hero's battery life not suck. The bottom line: Enabling background data kills the battery. Without it, you can't utilize the built in gmail client, and the other email client, well, sucks (and only supports poll). Enter k9mail. It was built (or so I read) from the stock email client, and added features to make it not suck so much. The key feature, in my opinion, is push imap using imap idle. In the old days, your phone would periodically check for new email (calling polling). You could specify how frequent you wanted it to check, every half hour, or daily, or whatever. The problem is, even if you don't have any new mail it still wakes up and checks; and when it wakes up to check, any other application that wanted to run (but not badly enough to wake up the phone to do it) will also run (part of the android architecture to save battery life). The net result: battery drain. If you want 'near instant' notification, you have to poll very frequently, wake up the phone many times throughout the day (and night), and all these other applications would make the phones 'awake time' even longer, draining the battery even more.
With k9mail you can configure it for push imap. This means it goes to check for mail once, and tells the mail server to tell it when new mail arrives (the technical term is imap idle). What this means is that the phone doesn't need to wake up to periodically check for messages. The advantage is instant notification of new email without the downside of polling. k9mail also supports polling, which you might want to do because moving mail / deleting mail via another email client or the web won't clear it out of k9mail (those changes aren't pushed).
So, here's the numbers: The phone was on for 53 hours straight with only 55% battery drain or 825 mA, for an average battery pull of 15.57 mAh (my best so far! The phone could last up to 96.3 hours at that rate). I didn't make any calls during that time. I used the phone very minimally to read a few emails and text messages and check the battery life. GPS, WIFI and Bluetooth were disabled (mobile network on). Background data was disabled, and no weather updates. k9mail was configured for pushmail on my gmail account (probably ~10 emails/day) with polling setup for every 6 hours (push and poll only on the inbox).