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.
(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