emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
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 21:31:13 -0400	[thread overview]
Message-ID: <v2nc8389b601004121831pb6b15d4gb893a28b8d817175@mail.gmail.com> (raw)
In-Reply-To: <87bpdoio0j.fsf@gmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 14960 bytes --]

Thanks for the response.  I upgraded, now I get a

Debugger entered--Lisp error: (wrong-type-argument arrayp t)
 substring(t 33)
 (progn (insert org-mime-default-header) (insert body) (write-file tmp-file)
(org-load-modules-maybe) (unless org-local-vars (setq org-local-vars ...))
(substring (eval ...) (if ... ... 0)))
 (unwind-protect (progn (insert org-mime-default-header) (insert body)
(write-file tmp-file) (org-load-modules-maybe) (unless org-local-vars ...)
(substring ... ...)) (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) (org-load-modules-maybe) (unless org-local-vars (setq
org-local-vars ...)) (substring (eval ...) (if ... ... 0)))
 (save-excursion (with-temp-buffer (insert org-mime-default-header) (insert
body) (write-file tmp-file) (org-load-modules-maybe) (unless org-local-vars
...) (substring ... ...)))
 org-mime-org-export("org" #("\nHTML test\n\n~foo~\n=bar=\n_baz_\n\n| 1 | 2
|\n| a | b |\n" 0 1 (fontified t) 1 11 (fontified t) 11 12 (fontified t) 12
18 (fontified t) 18 24 (fontified t) 24 30 (fontified t) 30 31 (fontified t)
31 40 (fontified t face (gnus-cite-1 message-cited-text)) 40 41 (fontified
t) 41 50 (fontified t face (gnus-cite-1 message-cited-text)) 50 51
(fontified t)) "/tmp/mail2522ZvL")
 (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)
 call-interactively(org-mime-htmlize record nil)

I tried this with orgstruct-mode off and on, but it was the same error
either way.  Earlier, before I got the latest version, I tried with
orgstruct-mode on, and it successfull htmlized my mail. But, when I received
it, the mail only contained the word "nil".

On Mon, Apr 12, 2010 at 1:22 PM, Eric Schulte <schulte.eric@gmail.com>wrote:

> Hi Andrew,
>
> Thanks for the report.  My guess is that somehow the call to
> org-export-as-html is erroring out because some org-mode variables
> aren't being set, maybe you don't have orgstruct-mode as a minor-mode in
> your email composition -- not that it's required, but that could be the
> difference between our setups which is causing you to see the bug and
> not me.
>
> I've changed the `org-mime-org-export' so it more closely mimics the
> `org-run-like-in-org-mode' wrapping function, which should hopefully fix
> this problem.  Please let me know either way, and if the problem
> persists we can try to figure out exactly which variable isn't being
> initialized.
>
> Thanks for the report! -- Eric
>
> Andrew Hyatt <ahyatt@gmail.com> writes:
>
> > 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 <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.2: Type: text/html, Size: 20323 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

  reply	other threads:[~2010-04-13  1:31 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
2010-04-12 17:22                                             ` Eric Schulte
2010-04-13  1:31                                               ` Andrew Hyatt [this message]
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

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=v2nc8389b601004121831pb6b15d4gb893a28b8d817175@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 public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).