Today I decided to go back to basics and take a quick overview of the nitty gritty aspects of email that a lot of marketers (including myself) are perfectly happy never to have to think about. These provide the reasoning for a lot of rules that we follow in regards to email, but many never fully understand. Why do emails have to link absolutely to hosted images, instead of just bundling in the email itself? Why do we use inline CSS? Why do we avoid relying on body or head tags? And why should I avoid using “Oprah!” in my body copy…
Understanding MIME
“A mime makes the invisible visible.” – Marcell Marceau
Email is MIME. (that’s Multipurpose Internet Mail Extensions) Or at least nearly all human-written e-mail (and a lot of automated e-mail) is transmitted via SMTP (simple mail transfer protocal) in MIME format. What MIME does is define how information is sent through e-mail, including non-English text, and content such as images, sounds, movies, etc.
MIME content is arranged in a tree structure with multiple “leaf” nodes consisting of non-multipart content type and the “non-leaf” nodes that can contain a variety of multipart content types. This allows a message to contain mixed data, including text, replies, alternative content, data files (images, audio, etc.) and more. When a message is received, a client translates the data from MIME, and displays it. (this is also some times done by mail servers.)
Most HTML email is sent in Multipart/Alternative MIME format, which sends both text and HTML based versions so that readers that don’t support HTML can still display the message. As such, Multipart/Alternative MIME makes sure that your message is visible to whoever receives it.
Why we use external Images
“The photographic image… is a message without a code.” – Roland Barthes
Using MIME, non-html content (such as images) can be sent in email. However, there is no way to access content bundled with your message using HTML. As such, you can’t effectively reference images included in an email message (well, in theory you could but it would require some pretty major modifications of your email client). Instead, images have pulled from an external server and displayed like any other HTML content.
This is a blessing in disguise as it also allows you to track email opens by tracking how many times an image has been pulled from your web server. In fact, this is how most Email Service Providers (ESPs) track email opens. They use a unique invisible gif that is pulled form their server, tally the times it has been downloaded, and report that back as your “open rate”. This works well, as long as that invisible gif is being downloaded.
Woha hold on there, what about clients that block images on load? Gmail, Outlook, etc.? Yep, if the user reads your email, but never loads images, then it isnt tracked as an opened email. This skews open rates! It is also why text based emails can’t be tracked.
Tagging, in-line CSS, and more.
To make matters worse, web-based email clients bring a whole new set of limitations to email. Since your email is displaying within a webpage, the pressence of <head>, <body>, and often <style> tags . These already exist on page, and in order to keep any potential problems with duplicate tagging from ocurring, web based email clients tend to cut this content our of your email. CSS is sometimes even stripped, in order to make sure that your email isn’t going to break the markup of their web based client. This is why we have to use inline styles.
Spam filters
Spamassassin is one of the most commonly used spam filters available, included in loads of commercial spam solutions, such as offerings by Symantec and McAffe, and even in Apple Mail. A “heuristics engine”, it uses a combination of a feature-recognizing filter, blacklist and whitelist data, and pretty much anything you want to add, to create a series of “best practices” for detecting spam. It works by assigning a numerical score to various phrases, words, and properties of an email, then when it’s score gets too high, marks it as spam. These properties can often be innocuous: in one example “Talks about Oprah with an exclamation!” netted a spam assassin points. Ooh…
However, that may not be as bad as it seems. Baysian filters scored the same at two points. These evaluate the probability that any individual words/phrases are a sign of spam. These include “good” and “bad” words, and compares the two against each other to create a spam score. This is a huge topic and well beyond the scope of this post, but for those really interested in Baysian spam filtering, read this great explanation of baysian filters.