Using CSS and HTML in Email Newsletters
Email newsletters are more popular than ever, and everyone loves to design a rich website-like newsletter for their subscribers. Unfortunately, email isn't the web. Your beautiful design work might look great in one email client, but chances are when you look at the same work a different email client the results will not be the same.
Why? In a nutshell, some email clients are moving away from full CSS support. CSS (Cascading Style Sheets) is the technology that allows for modern, powerful, flexible website designs. (If you don't know what CSS is or how to use it, chances are the rest of this article isn't for you -- but show it to your email newsletter designer!)
As of early 2007, Gmail is the most restrictive as it will ignore all external and embedded style sheets. (It will support inline styles.) Worse, Microsoft's just-released Outlook 2007 actually takes a few big steps backwards in its CSS and HTML support, opting to use MS Word as the rendering engine. (Check out Campaign Monitor's article for the shocking lowdown!) For this reason, we consider compatibility with Gmail to be the baseline CSS and HTML support to design to. If it looks great in Gmail, chances are, it will look great in most other clients.
Even with inline styles, there are some restrictions. Fortunately, deprecated HTML tag attributes will fill the role of certain disabled inline styles (i.e. hspace, bgcolor, align, etc)
So here are Groundwire's guidelines for creating successful email newsletters that will look good even in the worst email clients. We don't mention much about design aesthetics, just coding practices that will succeed in all environments. (For testing, we used Gmail, Outlook 2003, Outlook Web Access, Hotmail, and Yahoo).
Things To Avoid
Do not rely on external (<link rel="stylesheet">) or embedded style sheets (those contained within the <style> tag above the <body> tag). This is the most important thing to avoid. Many email services cut everything above the body tag and disable external style sheets.
Don't use tag attributes on the <body> tag (such as widths or background colors). Most email services ignore the <body> tag. You can try putting your whole newsletter inside a <div> and apply inline styles to it. Results may vary.
Things To Do
Use tables for layout. Lots of them. You're welcome to try <div> tags for positioning and layout, but our research shows that tables are more consistently supported. C'mon now. Get over your table-phobia and embrace the parallelogram.
Use inline styles liberally in tables. In fact, you'll find you can get the best mileage out of inline styles in <td> tags. That way you are setting up little style regions within each table. Think of these inline styles as miniature style sheets. This allows non-technical users to swap content in and out of pre-formatted cells in a modular fashion.
Declare width, cellpadding, and cellspacing for all tables and table cells. Doing so will result in a fixed width for the template. This helps because most people will view a newsletter in a preview pane which is much smaller than the width of their monitor. Don't leave widths to chance because many email clients like to "fill in the blank" which can break the design.
- Test your newsletter by sending to yourself or colleagues. This will give you the best chance to catch any problems before your whole subscriber list does! Send test messages to a variety of email clients such as Outlook, Hotmail, Yahoo, and Gmail.
Don't use background images. Gmail, among others, will ignore any url() attribute in an inline style, and the simple background= tag attribute. You can use background colors if you wish (bgcolor tag attribute or background-color: css statement).
Don't use images for important content like calls to action, headlines and links to your web site. Outlook, Gmail and others turn images off until allowed by the user. If your entire newsletter is graphical, all your recipients are going to see is a lot of broken images.
Provide alt text for all images. That way the reader will see some content in place of the disabled images. This works particularly well for logos.
Declare BOTH height AND width parameters for images. Some email clients will default to "0" for undeclared height or width. Poor old Outlook Web Access especially needs this for your table layout to display properly.
Use hspace and vspace tag attributes to add whitespace around an image. Margin and padding inline styles are supported by most, but not all email clients (Outlook 2007 and Live Hotmail provide only spotty support here).
An awesome article by Xavier Frenette which lines out exactly which properties, tags, and selectors are or are not supported by various email clients.
A similar article by David Greiner which includes information about Macintosh