When it comes to e-mail, I’m a plain-text kind of guy. But I know that some businesses prefer to use HTML-formatted e-mail, and thanks to Gwen’s new job, I’ve been learning way more than I ever wanted to about this. Long story short, it’s a nightmare. Avoid.
If you can’t avoid it (as Gwen cannot), you have to learn to deal with it. It’s a complicated problem because there are more renderers for HTML e-mail in frequent use than there are web browsers: in addition to client-side e-mail apps like Outlook or Mail.app, there are also web-based clients like Yahoo (which has two separate renderers, depending on whether you’re using old-and-busted Yahoo mail or new-hotness Yahoo mail), Hotmail, and Gmail.
Each of these has its own peculiarities, most of which can be managed without too much pain, except for one: Outlook 2007. Outlook ’07 actually has a more primitive renderer than Outlook 2003, using the renderer from MS Word instead of the renderer from Internet Exlorer. Word’s renderer uses a non-compliant mishmash of HTML 2.0 and HTML 3.2, with very limited support for CSS. There has been a movement among people who have to deal with this to get Microsoft to straighten up and fly right. Last week, Microsoft promised that they would not, provoking considerable gnashing of teeth.
I’m surprised at Microsoft’s response. They seemed to generally be moving in the direction of better standards support, if perhaps grudgingly so. While there is a legitimate argument to using Word’s HTML renderer in Outlook, this strikes me as a situation where they could have their cake and eat it too—in fact, there’s a recent precedent in Microsoft’s approach to HTML rendering with the compatibility mode in IE8.
It would be nice if the Word HTML renderer and generator were brought into the new millennium to emit and interpret standards-compliant code. It would also be nice if I had a unicorn that farted rainbows.
Short of that, it would be a relatively straightforward expedient for documents designed in Outlook around Word’s HTML renderer to include a header element like
<meta http-equiv="X-UA-Compatible" content="Outlook=EmulateWord" /> or equivalent in order to invoke that renderer, otherwise relying on whatever the current IE renderer is. This would, admittedly, add some overhead to the app, but MS doesn’t seem to have any aversion to adding overhead to their code.