From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Davison Subject: Re: [CONTRIB?] using orgmode to send html mail? Date: Mon, 05 Apr 2010 10:53:22 -0400 Message-ID: <87fx3aq7bx.fsf@stats.ox.ac.uk> References: <878w9krtyn.wl%dmaus@ictsoc.de> <871vfa24qo.fsf@gmail.com> <87pr2uww2d.fsf@columbia.edu> <87tys5zrwm.fsf@gmail.com> <87sk7pzk02.fsf@stats.ox.ac.uk> <87tys5r3q6.fsf@gmail.com> <87ocid7cuj.wl%dmaus@ictsoc.de> <874ok5qxp9.fsf@gmail.com> <87vdckksnj.wl%dmaus@ictsoc.de> <874ok33zje.fsf@gmail.com> <87zl1vf4ru.wl%dmaus@ictsoc.de> <874ok311t9.fsf@gmail.com> <87y6h85pid.fsf_-_@gmail.com> <87fx3g1cld.fsf@stats.ox.ac.uk> <87eij05had.fsf@gmail.com> <878w98w4sz.fsf@stats.ox.ac.uk> <87sk7f8d6x.fsf@gmail.com> <87aatizcef.fsf@gmail.com> <87bpdyf1hy.fsf@stats.ox.ac.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NyngH-0000hj-CT for emacs-orgmode@gnu.org; Mon, 05 Apr 2010 10:53:37 -0400 Received: from [140.186.70.92] (port=53711 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NyngF-0000hW-RP for emacs-orgmode@gnu.org; Mon, 05 Apr 2010 10:53:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1NyngD-0006aO-Mf for emacs-orgmode@gnu.org; Mon, 05 Apr 2010 10:53:35 -0400 Received: from markov.stats.ox.ac.uk ([163.1.210.1]:51096) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1NyngD-0006a0-Eh for emacs-orgmode@gnu.org; Mon, 05 Apr 2010 10:53:33 -0400 In-Reply-To: <87bpdyf1hy.fsf@stats.ox.ac.uk> (Dan Davison's message of "Mon, 05 Apr 2010 09:54:49 -0400") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Eric Schulte Cc: emacs-orgmode@gnu.org Hmm, perhaps I should have been a bit more careful with protecting the various special email constructs in my message. Second try: Dan Davison writes: > Hi Eric, > > Thanks a lot for this, I think I'll use it quite a bit. > > This may be specific to my setup, but in case this is useful to others, > as a gnus user I had to do > > (setq mail-user-agent 'message-user-agent) > > Without altering this --- i.e. with mail-user-agent set to the default > value of 'sendmail-user-agent --- org-mime-org-buffer-htmlize puts the > outgoing message in mail-mode (a.o.t. message-mode). For me, that meant > that the resulting outgoing email was rendered verbatim in gmail, > whereas from message-mode it is fine. The exact contents of outgoing > emails are below. > > I noticed one small bug, but perhaps it's an org-mode bug? When I use > org-mime-org-buffer-htmlize on this > > ,---- > | *** Tasks > | - [ ] Check Popen.returncode of python system calls > `---- > > I get the following, which renders as a checkbox with an X, whereas my > checkbox was empty. (I've replaced the <> tag delimiters with {}) --8<---------------cut here---------------start------------->8--- {#multipart type=alternative}{#part type=text/plain} *** Tasks - [ ] Check Popen.returncode of python system calls {#part type=text/html}{div id="outline-container-1" class="outline-3"} {h3 id="sec-1"}Tasks {/h3} {div class="outline-text-3" id="text-1"} {ul} {li} {b}[{span style="visibility:hidden;"}X{/span}]{/b} Check Popen.returncode of python system calls {/li} {/ul} {/div} {/div} {#/multipart} --8<---------------cut here---------------end--------------->8--- > Comparison of outgoing mail from mail-mode and message-mode: > > With an org buffer containing (as active region or not) > > ,---- > | * heading > | text > `---- > > Here is what the outgoing email (i.e. the stdin received by > sendmail-program) looks like from mail-mode (mail formed by > org-mime-org-buffer-htmlize) > --8<---------------cut here---------------start------------->8--- To: dandavison0@gmail.com Subject: test {#multipart type=alternative}{#part type=text/plain} * heading text{#part type=text/html}{div id="outline-container-1" class="outline-2"} {h2 id="sec-1"}heading {/h2} {div class="outline-text-2" id="text-1"} {p}text {/p}{/div} {/div} {#/multipart} --8<---------------cut here---------------end--------------->8--- > And here is what the outgoing email looks like from message-mode (exact > same content, but pasted from mail-mode into message-mode). > > --8<---------------cut here---------------start------------->8--- > From: Dan Davison > To: dandavison0@gmail.com > Subject: test16 > Date: Mon, 05 Apr 2010 09:26:23 -0400 > Message-ID: <87y6h2f2tc.fsf@stats.ox.ac.uk> > User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux) > MIME-Version: 1.0 > Content-Type: multipart/alternative; boundary="=-=-=" > > --=-=-= > > * heading > text > > --=-=-= > Content-Type: text/html > >
>

heading

>
> >

text >

>
> > --=-=-=-- > --8<---------------cut here---------------end--------------->8--- > > Dan > > "Eric Schulte" writes: > >> 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 >> >> "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