From mboxrd@z Thu Jan 1 00:00:00 1970 From: Uwe Brauer Subject: Re: org-mime-htmlize: visual representation (thunderbird) Date: Wed, 11 Apr 2012 11:44:08 +0200 Message-ID: <878vi2k3h3.fsf@gilgamesch.quim.ucm.es> References: <87ehsei9zj.fsf@gilgamesch.quim.ucm.es> <8762dky9pt.fsf@gmx.com> <4F787201.2020403@mat.ucm.es> <87wr5zjtje.fsf@gmx.com> <871unv7ncy.fsf@gilgamesch.quim.ucm.es> <87d37e6gmd.fsf@gmx.com> Reply-To: Uwe Brauer Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from eggs.gnu.org ([208.118.235.92]:57582) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SHu68-0001ab-Tb for emacs-orgmode@gnu.org; Wed, 11 Apr 2012 05:44:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SHu66-0000a9-Rx for emacs-orgmode@gnu.org; Wed, 11 Apr 2012 05:44:20 -0400 Received: from mail-we0-f169.google.com ([74.125.82.169]:52032) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SHu66-0000Vi-F7 for emacs-orgmode@gnu.org; Wed, 11 Apr 2012 05:44:18 -0400 Received: by werj55 with SMTP id j55so551038wer.0 for ; Wed, 11 Apr 2012 02:44:16 -0700 (PDT) In-Reply-To: <87d37e6gmd.fsf@gmx.com> (Eric Schulte's message of "Wed, 11 Apr 2012 00:23:54 -0400") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Eric Schulte Cc: Lars Magne Ingebrigtsen , emacs-orgmode@gnu.org, ding >> On Wed, 11 Apr 2012 00:23:54 -0400, Eric Schulte wrote: > Uwe Brauer writes: >> >> Uwe >> > Hi Uwe, > Thanks for sending along this helpful review. I've just pushed two > changes to org-mime so that it now (1) wraps html and images in a > multipart/related mime structure and (2) marks images as "disposition > inline" so that they don't show up as attachments. Hi Eric, Thanks for your efforts. I have good and bad news. The bad news is your changes make things worse in Thunderbird, for reasons I don't understand the header of the resulting messages reads: Content-type: text/plain; charset=us-ascii which is wrong and now png are displayed! Which brings me to the good news. After I wrote to you I received a message from the TB developers which emphasised that, besides the information I have gave you, the main point is the header, which should be Content-type: multipart/related; boundary="=-=-=" and the thunderbird developers insist that this is the RFC 2387 standard. Gnus actually generate via the mml-generate-mime function the header Content-type: multipart/mixed; boundary="=-=-=" which is wrong. I brought up the issue in the gnus mailing list and the developers agreed that in the case of a html message with png the Content-type should follow the RFC standard. I checked this explicitly: your old code but with a different mml-generate-mime function generates a message which is correctly displayed in thunderbird and GMail and Ipod for that manner. BTW I don't know how this issue, of the Content-type in the header, is treated in VM or Wanderlust. Now the question is how to proceed: I had the idea of introducing a new variable mml-mime-use-related and wrap it into the mml-generate-mime code. Then org-mime-htmlize should set this variable to t, and later a different function should be added to the mail-send-hook setting the variable to nil again. Lars didn't like the idea and came up with a different implementation. However I don't see how to use it easily. So I include both solutions and let you decide which fits best for org-mime-htmlize. But as it is now you should undo your recent changes because even with the *new* mml-generate-mime function and your *new* code the resulting mail is not displayed correctly in TB. I have now added lars and the ding mailing list to the CC. Regards Uwe My solution: ,---- | (defvar mml-mime-use-related t | "*Variable to control whether to use `multipart/mixed' or `multipart/related'.") | | (defun mml-generate-mime () | "Generate a MIME message based on the current MML document." | (let ((cont (mml-parse)) | (mml-multipart-number mml-multipart-number)) | (if (not cont) | nil | (mm-with-multibyte-buffer | (if (and (consp (car cont)) | (= (length cont) 1)) | (mml-generate-mime-1 (car cont)) | (if mml-mime-use-related | (mml-generate-mime-1 (nconc (list 'multipart '(type . "related")) | cont)) | (mml-generate-mime-1 (nconc (list 'multipart '(type . "mixed")) | cont))) | (buffer-string)))))) `---- Lars solution ,---- | (defun mml-generate-mime (&optional multipart-type) | "Generate a MIME message based on the current MML document. | MULTIPART-TYPE defaults to \"mixed\", but can also | be \"related\" or \"alternate\"." | (let ((cont (mml-parse)) | (mml-multipart-number mml-multipart-number) | (options message-options)) | (if (not cont) | nil | (prog1 | (mm-with-multibyte-buffer | (setq message-options options) | (if (and (consp (car cont)) | (= (length cont) 1)) | (mml-generate-mime-1 (car cont)) | (mml-generate-mime-1 | (nconc (list 'multipart (cons 'type (or multipart-type "mixed"))) | cont))) | (setq options message-options) | (buffer-string)) | (setq message-options options))))) `----