`---- which wraps the html and images into a multipart/related type. Why is this later structure illegal? Are nested multi type parts not allowed? Also, it seems that everything I've tried works in gnus and in most web user agents. Is thunderbird simply a stickler for the letter of the RFC law? > > 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. > OK, I've just reverted my change, but I'm keeping the change of image disposition to "inline". > > 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. > OK. Then I will assume that this issue is out of my hands and wait for gnus to change its mime wrapping behavior upstream. > > BTW I don't know how this issue, of the Content-type in the > header, is treated in VM or Wanderlust. > I do my best to provide reasonable implementations for these other two mailers and assume that if anything goes wrong then someone will submit a bug report. > > 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. > While Lars' solution does look cleaner it is not clear to me how this would be used from an external tool (such as org-mime) which does not call `mml-generate-mime' explicitly, but rather relies on the normal mailing process to handle these specifics. Wouldn't it make the most sense for the mailing process to inspect the email and set the appropriate multipart type automatically. Thanks, > > 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))))) > `---- > > -- Eric Schulte http://cs.unm.edu/~eschulte/