Thanks Dan, I'm happy to hear I'm not the only person who's enjoying playing with this :).
Aside from changing the mime-delimeters for VM and wanderlust, it seems to me that the only remaining step between the current functionality and a seamless use of org-mode for email composition, is the resolution of images as email attachments. That would allow emails with embedded latex (which I personally would find very compelling), as well as embedded ditaa diagrams and images. If anyone knows more about mime, I'd be interested to hear suggestions, but I may try a first pass using `replace-regexp' to replace all <img> links with inline mime image attachments. I've just made a couple of small changes, and pushed this file up to a git repo at http://github.com/eschulte/org-html-mail, or for raw elisp http://github.com/eschulte/org-html-mail/raw/master/org-mml-htmlize.el Cheers -- Eric Dan Davison <davi...@stats.ox.ac.uk> writes: > "Eric Schulte" <schulte.e...@gmail.com> writes: > >> Xiao-Yong Jin <xj2...@columbia.edu> writes: >> >>> On Tue, 23 Mar 2010 13:54:39 -0600, Eric Schulte wrote: >>> >>>> Nice to see this topic has come back to life. >>>> I've been playing with my old org-html-mail.el file, and come up with a >>>> much simpler solution, which takes advantage of the mml message mode >>>> functionality with is used in gnus (and I would imagine in some other >>>> Emacs mail clients, but I can't be sure). >>> >>>> Just call this function and either the active region of your message >>>> buffer or the entire body (if no region is active) will be exported to >>>> html using org-mode, and will be wrapped in the appropriate mml wrapper >>>> to be sent as the appropriate mime type. >>> >> >> I've cleaned up the function somewhat, I'll include it immediately >> below by inserting it in a org-mode src_block and then exporting it to >> html, so those with html mail readers should see a nicely fontified >> version of the source code. > > This is really nice. I already sent my first HTML-formatted tables to > colleagues with it yesterday. And yes, the email comes up with nicely > formatted elisp in my web browser after hitting 'K H' in gnus. > > Dan > >> >> (defun org-mml-htmlize (arg) >> "Export a portion of an email body composed using `mml-mode' to >> html using `org-mode'. If called with an active region only >> export that region, otherwise export the entire body." >> (interactive "P") >> (let* ((region-p (org-region-active-p)) >> (html-start (or (and region-p (region-beginning)) >> (save-excursion >> (goto-char (point-min)) >> (search-forward mail-header-separator) >> (point)))) >> (html-end (or (and region-p (region-end)) >> ;; TODO: should catch signature... >> (point-max))) >> (body (buffer-substring html-start html-end)) >> (tmp-file (make-temp-name (expand-file-name "mail" "/tmp/"))) >> ;; because we probably don't want to skip part of our mail >> (org-export-skip-text-before-1st-heading nil) >> ;; because we probably don't want to export a huge style file >> (org-export-htmlize-output-type 'inline-css) >> ;; makes the replies with ">"s look nicer >> (org-export-preserve-breaks t) >> (html (if arg >> (format "<pre style=\"font-family: courier, >> monospace;\">\n%s</pre>\n" body) >> (save-excursion >> (with-temp-buffer >> (insert body) >> (write-file tmp-file) >> ;; convert to html -- mimicing >> `org-run-like-in-org-mode' >> (eval (list 'let org-local-vars >> (list 'org-export-as-html nil nil nil >> ''string t)))))))) >> (delete-region html-start html-end) >> (save-excursion >> (goto-char html-start) >> (insert >> (format >> "\n<#multipart type=alternative>\n<#part >> type=text/html>%s<#/multipart>\n" >> html))))) >> >> >>> >>> Thumbs up for this one. It should be included in >>> org-contrib, probably after taken care of other mail client >>> in emacs? >>> >> >> I have looked somewhat at both VM and Wanderlust, but they appear to use >> their own mime encoding schemes other than mml, so this won't work as-is >> in those mail clients. That said, assuming they also use simple mime >> encoding strings it should be hard to replace the mml specific mime >> delimiters presented as strings in the above functions with string >> delimiters appropriate for the other mail agents. >> >> also, I have to say I feel bad about publishing code which promotes the >> use of HTML mail. Generally I feel that everyone would be better off if >> they just used fixed width text email clients. As a concession to that >> intuition, if this function is called with a prefix argument, it will >> wrap the region (or entire email) as html in <pre></pre> tags ensuring >> that it will be rendered in a fixed-with font no-matter the receivers >> email client, so the following table should actually look like a >> table... >> >> | this table | | n | fibb(n) | >> |--------------+---+---+---------| >> | is | | 0 | 0 | >> | inside | | 1 | 1 | >> | of a pre box | | 2 | 1 | >> | | | 3 | 2 | >> >> >> Best -- Eric >> >>> >>>> So for example this >>>>> 1 | 2 | 3 | >>>>> --------------+--------+-------| >>>>> first column | second | third | >>> >>>> will be exported as this >>>> ━━━━━━━━━━━━━━ >>>> 1 2 3 >>>> ────────────── >>>> first column second third >>>> ━━━━━━━━━━━━━━ >>> >>> I use emacs-w3m in gnus, and the table looks great. >> _______________________________________________ >> Emacs-orgmode mailing list >> Please use `Reply All' to send replies to the list. >> Emacs-orgmode@gnu.org >> http://lists.gnu.org/mailman/listinfo/emacs-orgmode _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode