From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Maus Subject: Re: using orgmode to send html mail? Date: Fri, 02 Apr 2010 09:04:28 +0200 Message-ID: <87oci2wd1f.wl%dmaus@ictsoc.de> 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> <87y6h8tegw.wl%dmaus@ictsoc.de> <87k4ssb12n.fsf@gmail.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: multipart/mixed; boundary="===============0595026656==" Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Nxbrt-0003Eg-V9 for emacs-orgmode@gnu.org; Fri, 02 Apr 2010 04:04:42 -0400 Received: from [140.186.70.92] (port=56206 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Nxbrq-00023c-2K for emacs-orgmode@gnu.org; Fri, 02 Apr 2010 04:04:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Nxbji-0008R6-QB for emacs-orgmode@gnu.org; Fri, 02 Apr 2010 03:56:19 -0400 Received: from mysql1.xlhost.de ([213.202.242.106]:53189) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Nxaw7-0000m9-K3 for emacs-orgmode@gnu.org; Fri, 02 Apr 2010 03:05:04 -0400 In-Reply-To: <87k4ssb12n.fsf@gmail.com> 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: Dan Davison , emacs-orgmode@gnu.org --===============0595026656== Content-Type: multipart/signed; boundary="pgp-sign-Multipart_Fri_Apr__2_09:04:28_2010-1"; protocol="application/pgp-signature" Content-Transfer-Encoding: 7bit --pgp-sign-Multipart_Fri_Apr__2_09:04:28_2010-1 Content-Type: text/plain; charset=US-ASCII Eric Schulte wrote: >> >> Thinking functional this might be the first function of >> org-mail-htmlize[1]: Create a html representation of message body if >> necessary or appropriate. >> >Oh, so this would be a slightly different issue, >So this function could be run *every* time an email is sent. I agree >that in those cases running on the entire message would be the right way >to go. Right, this would be nice for people who are obliged to send out html messages. If this is turned on org-mime should display the string "HTML" in the mode line. In the WL it's done this way: ,---- | (defun dmj/wl-send-html-message-draft-init () | "Create buffer local settings for maybe sending html message." | (unless (boundp 'dmj/wl-send-html-message-toggled-p) | (setq dmj/wl-send-html-message-toggled-p nil)) | (make-variable-buffer-local 'dmj/wl-send-html-message-toggled-p) | (add-to-list 'global-mode-string | '(:eval (if (eq major-mode 'wl-draft-mode) | dmj/wl-send-html-message-toggled-p)))) `---- This function is hooked into mime-edit mode and set's a buffer local variable that indicates "html message mode" and is displayed in the mode line. >> >> 2/ >> >> The second function: Attach external files that are referenced in the >> message. This might be useful even if you don't send out html >> messages: All external files are stashed into a multipart/mixed >> container along with a Content-Id: header field. >> >> Than all references are changed accordingly to point to the attached >> files: >> >> - for html use src/href with the cid: prefix >> >> - for text: good question. Maybe replace occurences of the file >> with a customizable string saying: "see attached file foo.bar". >> >I'm not sure I understand, I'm currently happy with my mail agent's >method of attaching files to email, what else would this use of the >function add aside from a new attachment syntax. What I meant was: Suppose you write a document in Org with references to external files (images etc.). If finished you'd like this document to a fellow by mail including all external files. So this function collects all these files, and maybe converts the message body to html, fires up Gnus/WL with a new message and inserts something like < #multipart type="alternate"> < #part type="text/plain"> ...plain text body... < #part type="text/html"> ...html body... < #/multipart> < #multipart type="mixed"> < #part type="image/png"> image1.png < #part type="image/png"> image2.png ... < #/multipart> That is: The original document including all external files -- and all references in the original file are replaced by references to the attachments. Original ,---- | ... | As you can see in [[file:figure1.png][Figure 1]], cats | *are* the cutest animals on earth. | ... `---- "figure1.png" will be attached and the reference adjusted to the attachment. HTML ,---- | As you can see in Figure 1, | cats are the cutest animals on earth. `---- Plain ,---- | As you can see in Figure 1 (see attached file: figure1.png), cats | *are* the cutest animals on earth. `---- >> 4/ >> >> Detecting the plain text body should not just stop on end of buffer >> but also on the first occurence of a MIME delimiter: Maybe the user >> already added a attachment. >> >Good point, one open question here is how to treat that mime border, I'm >thinking it may be best to simply stash it in a >#+BEGIN_HTML >original mime content >#+END_HTML >block, so that it survives the Org-mode export unscathed, however maybe >it's simpler just to end the html alternative part at the first mime >border. Yes, it is simpler. Simply search for the end of the message body with the condition: either eobp or MIME delimiter. For example when in mml (line 92ff in org-mime.el): ,---- | (html-end (or (and region-p (region-end)) | (if (not (re-search-forward "^<#part\\|^<#multipart" nil t)) | (point-max) | ;; one line up | (end-of-line 0) | (point)))) `---- With this you can even catch the signature that is separate by "-- \n". If re-search-forward finds an attachment the body ends right before. Small glitch: This code assumes MIME delimiters start at the beginning of a line ("^"). -- David -- OpenPGP... 0x99ADB83B5A4478E6 Jabber.... dmjena@jabber.org Email..... dmaus@ictsoc.de --pgp-sign-Multipart_Fri_Apr__2_09:04:28_2010-1 Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iF4EABEIAAYFAku1lvwACgkQma24O1pEeOZxqwD+Ogdp1nxNZ+oaw02uOoG5GFjO DRe4hc2DvuGTsTn3eIgBAOa2ZjcepdD6J2oTQOE0w3r24GJK8m78LnCKzx4WBEZV =5cNl -----END PGP SIGNATURE----- --pgp-sign-Multipart_Fri_Apr__2_09:04:28_2010-1-- --===============0595026656== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ 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 --===============0595026656==--