Re: [RFC] writing HTML email with notmuch

Subject: Re: [RFC] writing HTML email with notmuch

Date: Mon, 25 Feb 2019 13:56:31 -0500

To: Antoine Beaupré


From: Brian Sniffen

I appreciate the signature handling. But perhaps you used it on this message and it ate part of this line?

> (insert "
>    ;; remove Markdown <pre> markings

Brian Sniffen

> On Feb 24, 2019, at 8:52 PM, Antoine Beaupré <> wrote:
> Hi,
> TL;DR: magic recipe to include an HTML version when writing plaintext.
> I know, I know, HTML email is "evil"[1]. I mostly never ever use it, in
> fact, I don't remember the last time I consciously sent HTML. Maybe I
> did so back when I was using Netscape Communicator[2][3], but whatever.
> The reason I thought about this again is I have been doing more
> photography these days and, well, being allergic to social media, I have
> very few ways of sharing those photographs with families and friends. I
> have tried creating a gallery website with an RSS feed but I'm sure no
> one here will be surprised that the uptake is minimal, if
> non-existent. People expect to have stuff *pushed* to them, like
> Instagram, Facebook, Twitter or Spam does.
> So I thought[4] of Email again: the original social network! I figured I
> would just make a mailing list, and write to my people once in a while
> to let them new about my new pictures. And while writing the first
> email, I realized it was pretty silly to not include images, or at least
> *links* to images in the email.
> I'm sure you can see where this is going. A link in the email: who's
> going to click that. Who clicks now anyways, with all the tapping[5]
> going on. So the answer comes naturally: just write frigging HTML
> email. Don't be a rms^Wreligious zealot and do the right thing, what
> works basically everywhere[6] (even notmuch!).
> So I started Thunderbird and thought "what the heck am I doing! there
> must be a better way!" After searching for "message mode emacs html
> email ktxbye", I found some people already thought about this problem
> and came up with somewhat elegant solutions[7]. I built on that by
> trying to come up with a pure elisp solution, which goes a little like
> this:
> (defun anarcat/notmuch-html-convert ()
>  """create an HTML part from a Markdown body
> This will not work if there are *any* attachments of any form, those should be added after."""
>  (interactive)
>  (save-excursion
>    ;; wrap signature in a <pre>
>    (message-goto-signature)
>    (setq signature-position (point))
>    (forward-line -1)
>    ;; GFM markers for pre, used because easier to undo than the
>    ;; "prefix by 4 characters" standard
>    (insert "```")
>    (end-of-buffer)
>    (insert "```")
>    ;; set region to top of body then end of buffer
>    (end-of-buffer)
>    (message-goto-body)
>    (narrow-to-region (point) (mark))
>    ;; run markdown on region
>    (setq output-buffer-name "*notmuch-markdown-output*")
>    (markdown output-buffer-name)
>    (widen)
>    (save-excursion
>      (set-buffer output-buffer-name)
>      (markdown-add-xhtml-header-and-footer ""))
>    (insert "
> \n") (insert-buffer output-buffer-name) (insert "
>    ;; remove Markdown <pre> markings
>    (goto-char signature-position)
>    (while (re-search-forward "^```" nil t)
>      (replace-match ""))))
> For those who can't read elisp for breakfast, this does the following:
> 1. parse the current email body as markdown, in a separate buffer
> 2. make the current email multipart/alternative
> 3. add an HTML part
> 4. inject the HTML version in the HTML part
> There's some nasty business with formatting the signature correctly by
> wrapping it in a <pre> that's going on there - I took that from
> Thunderbird as well.
> (For those who *do* read elisp for breakfast, improvements and comments
> on the coding style are very welcome.)
> The idea is that you write your email normally, but in markdown. When
> you're done writing that email, you launch the above function (carefully
> bound to "M-x anarcat/notmuch-html-convert" here) which takes that email
> and adds an equivalent HTML part to it. You can then even tweak that
> part to screw around with the raw HTML if you feel depressed or
> nostalgic.
> What do people think? Am I insane? Could this work? Does this belong in
> notmuch? Or maybe in the tips section? Should I seek therapy? Do you
> hate markdown? Expand on the relationship between your parents and text
> editors.
> Thanks for any feedback,
> A.
> PS: the above, naturally, could be adapted to parse the body as RST,
> asciidoc, texinfo, latex or whatever insanity you think would be more
> appropriate, I don't care. The idea is the same.
> PPS: I remember reading about someone wanting to declare a text/markdown
> mimetype for email, and remembering it was all backwards and weird and I
> can't find the reference anymore. If some lazyweb magic person could
> forward the link to me I would be grateful.
> [1]: one of so many:
> [2]:
> [3]: yes my age is showing
> [4]: to be fair, this article encouraged me quite a bit:
> [5]: not the bass guitar one, unfortunately
> [6]:
> [7]:
> _______________________________________________
> notmuch mailing list
notmuch mailing list