HTML mails have been pissing off people since they were introduced. The additional clutter and bloat soon were criticized. Today, most mail I recieve is still plain text, but most spam is HTML.
Nevertheless, the concept isn’t that bad at all: Users don’t want to write plain text, but markup their text with emphasis, add links, define paragraphs etc.
Therefore, the content-type
text/enriched was defined in RFC 1896.
It failed; being a kind of SGML dialect with nonstandard semantics,
it’s too complicated for most mail clients to implement. In fact, the
text/enriched document I’ve ever seen was the sample file
enriched.doc included in the Emacs distribution.
I have some ideas to help users get their markup, but make users (or are these “professionals” now?) for text clients still being able to read the mails without the need of a browser.
First, all markedup mails get created as restricted XHTML. Basically, only these modules are needed:
Bidirectional text module:
This is a small, document-centric subset of XHTML, but enough for mail. Note that the “Style sheet module” is missing: CSS is problematic in mail, and not needed for the purpose of markup. Instead, each user should define his own stylesheet (or use a predefined one).
Just using XHTML doesn’t help against the problem of text client users, though. (Although I think they’d already be happy if the mails didn’t use crappy HTML3.2, but valid XHTML.)
Therefore, the mail gets updated in a textual format, for example Markdown or Textile. An example; this mail as the user wants it:
This is the according XHTML snippet:
<div> <p>Hello John,</p> <p>I have some new data for you; it's <strong>very important</strong> to me that you evaluate it soon:</p> <table> <thead><tr><th>Date</th> <th>Size</th></tr></thead> <tbody> <tr><td>05-01-2004</td> <td>17.1cm</td></tr> <tr><td>05-16-2004</td> <td>18.4cm</td></tr> <tr><td>06-01-2004</td> <td>19.8cm</td></tr> </tbody> </table> <p>Isn't that great?</p> <p>Yours,<br />J. Random User</p> <hr /> <address> <a href="mailto:firstname.lastname@example.org">J. Random User</a><br /> 42 Foo Street<br /> Pittsburgh, PA 15213</address> </div>
Can you see the clutter? :-). However, in Textile, it would only look like this:
Hello John, I have some new data for you; it's *very important* to that you evaluate it soon: |_. Date |_. Size | | 05-01-2004 | 17.1cm | | 05-16-2004 | 18.4cm | | 06-01-2004 | 19.8cm | Isn't that great? Yours, J. Random User <hr /><address>"J. Random User":mailto:email@example.com 42 Foo Street Pittsburgh, PA 15213 </address>
Definitely an improvement, no? And it’s readable by anyone.
So the way future markup-mail should work is:
Markup -> restricted XHTML -> Textile/Markdown
On the reader site, it’s of course just the reverse.
The only problem for now is the automatic conversion of XHTML to Textile. (And the need of a WYSIWYG XHTML widget; the Mozilla Compos(t)er code I just tried sucks hard.)
NP: Smog—No Dancing