Why are there so many programming languages and frameworks? Everyone has their own opinion on how something should be done. Some of these systems, like AOL, Yahoo, etc... have been around for a decade, and probably not updated much.
@Robert foundation link is a good start, but even that might be a bit to complex for some email clients. http://litmus.com/ does a damn good job of shedding light on what works/ what doesn't.
Look here: http://spamcheck.postmarkapp.com/ to test spam score also.
I've worked with people at companies where this was their only responsibility. Setting up emails for clients, making sure they pass a battery of tests and look great in all browsers and clients. It's an incredible PITA and it's not a set it and forget it thing. Clients can change month to month; spam filters change, etc...