This looks great. However, I get an error on my test mail: This is should be HTML mode. ~foo~ =bar= _baz_ | Table | A | | 1 | 2 | On calling org-mime-htmlize Debugger entered--Lisp error: (wrong-type-argument stringp nil) string-match(nil #("This is should be HTML mode." 0 28 (fontified t))) byte-code("\304\211\305\n \"\203A org-html-handle-time-stamps(#("This is should be HTML mode." 0 28 (fontified t))) byte-code("\203 org-export-as-html(nil nil nil string t) (let nil (org-export-as-html nil nil nil (quote string) t)) eval((let nil (org-export-as-html nil nil nil (quote string) t))) (progn (insert org-mime-default-header) (insert body) (write-file tmp-file) (eval (list ... org-local-vars ...))) (unwind-protect (progn (insert org-mime-default-header) (insert body) (write-file tmp-file) (eval ...)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ... ...) (and ... ...))) (with-current-buffer temp-buffer (unwind-protect (progn ... ... ... ...) (and ... ...))) (let ((temp-buffer ...)) (with-current-buffer temp-buffer (unwind-protect ... ...))) (with-temp-buffer (insert org-mime-default-header) (insert body) (write-file tmp-file) (eval (list ... org-local-vars ...))) (save-excursion (with-temp-buffer (insert org-mime-default-header) (insert body) (write-file tmp-file) (eval ...))) org-mime-org-export("html" #("\nThis is should be HTML mode.\n\n~foo~\n=bar=\n_baz_\n\n| Table | A |\n| 1 | 2 | \n\n-- \n" 0 1 (fontified t) 1 42 (fontified t) 42 43 (fontified t) 43 44 (article-type emphasis fontified t) 44 47 (fontified t) 47 48 (article-type emphasis fontified t) 48 50 (fontified t) 50 63 (fontified t face (gnus-cite-1 message-cited-text)) 63 64 (fontified t) 64 78 (fontified t face (gnus-cite-1 message-cited-text)) 78 79 (fontified t rear-nonsticky t) 79 80 (fontified t) 80 84 (fontified t)) "/tmp/mail2522NRw") (org-mime-replace-images (org-mime-org-export "html" raw-body tmp-file) tmp-file) (let* ((region-p ...) (html-start ...) (html-end ...) (raw-body ...) (tmp-file ...) (body ...) (org-export-skip-text-before-1st-heading nil) (org-export-htmlize-output-type ...) (org-export-preserve-breaks org-mime-preserve-breaks) (html-and-images ...) (html-images ...) (html ...)) (delete-region html-start html-end) (save-excursion (goto-char html-start) (insert ... ...))) org-mime-htmlize(nil) On Fri, Apr 9, 2010 at 12:41 PM, Eric Schulte wrote: > Announcing the addition of org-mime to the contrib directory of Org-mode > > this allows sending HTML email using org-mode including... > > > - *tables* colname onecolname two 11 24 39 > - *inline images* including latex equations [image: $f(n) = n + > \frac{1}{n} \int_{0}^{n}{d_x f(x) + f(n - x)}$] and the results of > ditaa blocks, etc… > > [image: blue.png] > > - *blockquotes* > > HTML e-mail is the use of a subset of HTML (often ill-defined) to > provide formatting and semantic markup capabilities in e-mail that are not > available with plain text. – wikipedia > > - fontified *code blocks* (shown below) > - and *HTML character* conversion, like ∀ character c s.t. ∃ h ∈ *HTML > characters* and c ≡ h, org-html-export of c results in h > > > > The original org-mode formatted plain text is included as a text/plain > mime alternative to the generated html. > > Below find the org-mime export of the org-mime worg page which will be > available at http://orgmode.org/worg/org-contrib/org-mime.php. > > Best -- Eric > > General > > org-mime can be used to send HTML email using Org-mode HTML export. > > This approximates a WYSiWYG HTML mail editor from within Emacs, and can be > useful for sending tables, notified source code, and inline images in email. > > How to use it > Setup > > org-mime exposes two functions > `org-mime-htmlize' can be called from within a mail composition buffer to > export either the entire buffer or just the active region to html, and embed > the results into the buffer as a text/html mime section. > > org-mime-htmlize is an interactive Lisp function in `org-mime.el'. > > (org-mime-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. > > `org-mime-org-buffer-htmlize' can be called from within an Org-mode > buffer to export either the whole buffer or the narrowed subtree or active > region to HTML, and open a new email buffer including the resulting HTML > content as an embedded mime section. > > org-mime-org-buffer-htmlize is an interactive Lisp function in > `org-mime.el'. > > (org-mime-org-buffer-htmlize) > > Export the current org-mode buffer to HTML using > `org-export-as-html' and package the results into an email > handling with appropriate MIME encoding. > > The following key bindings are suggested, which bind the C-c M-o key > sequence to the appropriate org-mime function in both email and Org-mode > buffers. > > (add-hook 'message-mode-hook > (lambda () > (local-set-key "\C-c\M-o" 'org-mime-htmlize))) > (add-hook 'org-mode-hook > (lambda () > (local-set-key "\C-c\M-o" 'org-mime-org-buffer-htmlize))) > > CSS style customization > > Email clients will often strip all global CSS from email messages. In the > case of web-based email readers this is essential in order to protect the > CSS of the containing web site. To ensure that your CSS styles are rendered > correctly they must be included in the actual body of the elements to which > they apply. > > The `org-mime-html-hook' allows for the insertion of these important CSS > elements into the resulting HTML before mime encoding. The following are > some possible uses of this hook. > > - for those who use color themes with Dark backgrounds it is useful to > set a dark background for all exported code blocks and example regions. This > can be accomplished with the following > > (add-hook 'org-mime-html-hook > (lambda () > (org-mime-change-element-style > "pre" (format "color: %s; background-color: %s; padding: 0.5em;" > "#E6E1DC" "#232323")))) > > - the following can be used to nicely offset block quotes in email > bodies > > (add-hook 'org-mime-html-hook > (lambda () > (org-mime-change-element-style > "blockquote" "border-left: 2px solid gray; padding-left: 4px;"))) > > > For other customization options see the org-mime customization group. > Credits > > org-mime was developed by Eric Schulte with much-appreciated help and > discussion from everyone on the "using orgmode to send html mail" > thread especially David Maus. > > "Eric Schulte" writes: > > > Carsten Dominik writes: > > > >> On Apr 5, 2010, at 7:39 AM, Eric Schulte wrote: > >> > >>> Hi, > >>> > >>> It is now possible to send HTML mail directly form an org-mode buffer. > >>> > >>> Calling `org-mime-org-buffer-htmlize' (could probably use a better > >>> name) > >>> from inside of an org-mode buffer will use `org-export-as-html' to > >>> generate HTML of the buffer (respecting regions and subtree > >>> narrowing), > >>> and will then package the resulting HTML with all linked images into a > >>> message buffer. > >>> > >>> As usual thanks to Carsten's thoughtfully organized functions and > >>> control variables this was surprisingly easy to implement. > >>> > >>> Cheers -- Eric > >>> > >>> The code is still up at http://github.com/eschulte/org-mime > >> > >> CONTIRB? yes, after the release..... > >> > > > > Sounds great, I'm move this into contrib then. -- Eric > > > >> > >> - Carsten > >> > >>> > >>> "Eric Schulte" writes: > >>> > >>>> Dan Davison writes: > >>>> > >>>> [...] > >>>> > >>>>> > >>>>> As I understand it the code you've written is designed to be > >>>>> called in a > >>>>> message-mode buffer with orgstruct-mode in force. Would it make > >>>>> sense to > >>>>> also include in your package a complementary function, that one > >>>>> calls in > >>>>> an org-mode buffer? I envisage this generating the HTML, forming the > >>>>> multipart email contents, and then saving it to the kill ring, so > >>>>> that > >>>>> it can be pasted into an email. > >>>>> > >>>>> This function would have access to the directory-name and so > >>>>> should be > >>>>> able to resolve relative paths. Also, there might be some other > >>>>> advantages -- for example when exporting just a region or subtree, > >>>>> buffer-wide properties such as #+TITLE and #+AUTHOR are picked up > >>>>> by the > >>>>> org exporter and packaged into the HTML. > >>>>> > >>>>> In other words, can I use your machinery to package up the HTML > >>>>> generated by Org's C-e dispatcher into an appropriately-constructed > >>>>> email? > >>>>> > >>>> > >>>> Hi Dan, > >>>> > >>>> That sounds like a good idea, I've added it to a fledgling task list > >>>> packaged in the README at [1]. I'd say there are two options. > >>>> > >>>> 1) which you mentioned saving the entire exported content to the > >>>> kill-ring. One problem here is that everything is still text and > >>>> pastable only *before* the mime export process, which means that > >>>> linked images wouldn't resolve after pasting into the email client. > >>>> > >>>> 2) having the function generate a new mail buffer containing the > >>>> exported content. This buffer would need to have it's > >>>> `buffer-file-name' set, for images to resolve during export. I'm > >>>> not > >>>> sure how this should best work. > >>>> > >>>> Thanks -- Eric > >>>> > >>>> Footnotes: > >>>> [1] http://github.com/eschulte/org-mime > >>> > >>> > >>> _______________________________________________ > >>> 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 > >> > >> - Carsten > > _______________________________________________ > 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 > >