"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