From: Andrew Hyatt <ahyatt@gmail.com>
To: Eric Schulte <schulte.eric@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: [ANN] org-mime -- using orgmode to send html mail?
Date: Mon, 12 Apr 2010 09:37:58 -0400 [thread overview]
Message-ID: <r2sc8389b601004120637x3709e629mf5c2d5d30522c36e@mail.gmail.com> (raw)
In-Reply-To: <8739z44lyl.fsf@gmail.com>
[-- Attachment #1.1.1: Type: text/plain, Size: 10741 bytes --]
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\x18\x19\305\n\v\"\203A
org-html-handle-time-stamps(#("This is should be HTML mode." 0 28
(fontified t)))
byte-code("\b\203\x13
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 <schulte.eric@gmail.com>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<http://thread.gmane.org/gmane.emacs.orgmode/23153>"
> thread especially David Maus.
>
> "Eric Schulte" <schulte.eric@gmail.com> writes:
>
> > Carsten Dominik <carsten.dominik@gmail.com> 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" <schulte.eric@gmail.com> writes:
> >>>
> >>>> Dan Davison <davison@stats.ox.ac.uk> 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
>
>
[-- Attachment #1.1.2: Type: text/html, Size: 16041 bytes --]
[-- Attachment #1.2: blue.png --]
[-- Type: image/png, Size: 2087 bytes --]
[-- Attachment #1.3: mail78058-A_b023893fa20418a1525cad63accc444e9a8954d3.png --]
[-- Type: image/png, Size: 2165 bytes --]
[-- Attachment #2: Type: text/plain, Size: 201 bytes --]
_______________________________________________
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
next prev parent reply other threads:[~2010-04-12 13:38 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-22 2:34 using orgmode to send html mail? Matt Price
2010-03-22 15:44 ` Matt Price
2010-03-22 20:18 ` David Maus
2010-03-23 19:54 ` Eric Schulte
2010-03-23 21:46 ` Xiao-Yong Jin
2010-03-24 15:00 ` Eric Schulte
2010-03-24 17:50 ` Dan Davison
2010-03-24 18:01 ` Eric Schulte
2010-03-24 19:12 ` David Maus
2010-03-24 20:19 ` Eric Schulte
2010-03-25 21:17 ` David Maus
2010-03-26 14:53 ` Eric Schulte
2010-03-26 16:04 ` David Maus
2010-03-26 16:32 ` Eric Schulte
2010-03-31 18:12 ` [CONTRIB?] " Eric Schulte
2010-03-31 20:05 ` Dan Davison
2010-03-31 21:10 ` Eric Schulte
2010-03-31 21:37 ` Dan Davison
2010-04-01 14:22 ` Eric Schulte
2010-04-05 5:39 ` Eric Schulte
2010-04-05 6:49 ` Carsten Dominik
2010-04-05 15:31 ` Eric Schulte
2010-04-09 16:41 ` [ANN] org-mime -- " Eric Schulte
2010-04-09 17:41 ` Matt Price
2010-04-09 19:11 ` Eric Schulte
2010-04-09 19:22 ` David Maus
2010-04-09 20:34 ` Eric Schulte
2010-04-12 13:37 ` Andrew Hyatt [this message]
2010-04-12 17:22 ` Eric Schulte
2010-04-13 1:31 ` Andrew Hyatt
2010-04-14 0:57 ` Eric Schulte
2010-04-14 1:57 ` Andrew Hyatt
2010-04-14 14:59 ` Eric Schulte
2010-04-14 18:00 ` Andrew Hyatt
2010-04-14 19:26 ` Bernt Hansen
2010-04-14 8:39 ` Eric S Fraga
2010-04-14 15:12 ` Eric Schulte
2010-04-14 19:38 ` Eric S Fraga
2010-04-15 2:49 ` Eric Schulte
2010-04-15 15:47 ` Eric Schulte
2010-04-13 23:03 ` Eric S Fraga
2010-04-14 1:22 ` Eric Schulte
2010-04-05 13:54 ` [CONTRIB?] " Dan Davison
2010-04-05 14:50 ` David Maus
2010-04-05 14:53 ` Dan Davison
2010-04-05 15:30 ` Eric Schulte
2010-04-01 17:37 ` Sivaram Neelakantan
2010-04-01 17:45 ` Sivaram Neelakantan
2010-03-31 20:37 ` David Maus
2010-03-31 22:03 ` Eric Schulte
2010-04-02 7:04 ` David Maus
2010-04-02 23:01 ` Eric Schulte
2010-04-03 9:19 ` David Maus
2010-04-04 17:52 ` Eric Schulte
2010-04-01 7:53 ` Vagn Johansen
2010-04-02 6:34 ` David Maus
2010-04-02 14:57 ` Dan Davison
2010-04-02 17:25 ` David Maus
2010-04-02 21:10 ` Eric Schulte
2010-04-03 9:00 ` David Maus
2010-04-03 12:03 ` David Maus
2010-04-04 2:41 ` Eric Schulte
2010-04-04 10:00 ` David Maus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=r2sc8389b601004120637x3709e629mf5c2d5d30522c36e@mail.gmail.com \
--to=ahyatt@gmail.com \
--cc=emacs-orgmode@gnu.org \
--cc=schulte.eric@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.