MarkdownMail is a new iPhone app from Second Gear, the people who make Elements, my favorite iPhone text editor/syncer. The idea behind MarkdownMail is simple:

  1. Write a message in plain text using Markdown formatting.
  2. Preview it to make sure the conversion to HTML works the way you expect.
  3. Send the HTML version of the message via email.

Here’s the main screen, showing a message in plain text.

Tap the stylized Safari button in the bottom toolbar to see the HTML preview.

If it looks good, return to the main screen and tap the Mail icon to send it. Here’s what it will look like to the recipient on an iPhone,

and to a recipient on GMail,

Pretty nice, even if you tend to think of HTML email as the work of the devil.

I know of no way to change the stylesheet used to render the HTML. I’m pretty sure HTML email allows <style> tags, and it’d be nice if Second Gear would allow us to define our own stylesheet to be included at the top of each message. Next version, maybe.

MarkdownMail doesn’t use John Gruber’s canonical Markdown processor because Gruber’s code is written in Perl, which isn’t available on the iPhone. In fact, most Markdown implementations are written in interpreted/semicompiled languages that can’t be put on iOS devices. But there is Discount, a C implementation written by David Parsons, and that’s what Second Gear chose for MarkdownMail.

An interesting thing about Discount is that it extends the Markdown syntax to include tables, an example of which is given in the screenshots above. On a computer, Discount also has a syntax for definition lists and alphabetical lists, but neither of those extensions seem to be turned on for MarkdownMail.

Like Elements, MarkdownMail supports TextExpander Touch, the abbreviation expander from Smile Software. Because hashmarks and asterisks are two keyboards away from the standard keyboard, I’ve added a few snippets to my TextExpander set for helping with Markdown:

Abbreviation Expansion HTML
hz #‗ <h1>
hhz ##‗ <h2>
hhhz ###‗ <h3>
sz *‗ <ul><li>

where I’m using the double underscore (‗) to represent a blank space. You might think this is more trouble than it’s worth, but I use lots of lists and headers and find this much faster than typing the hashmarks and asterisks themselves.

What I like best about MarkdownMail is not the app itself, but what it might lead to in Elements. Here’s what I tweeted yesterday:

And this is Second Gear’s response:

Many of my Elements notes are already in Markdown format. The ability to preview them on my phone—without copying them into MarkdownMail first—would be a big help. Since that isn’t likely to happen soon, I suppressed my usual feelings about buying apps

and went ahead and got MarkdownMail.