From 718fefa4e3941bf3025482124d7f454ba2305f27 Mon Sep 17 00:00:00 2001 From: Eric Schulte Date: Wed, 11 Apr 2012 00:20:22 -0400 Subject: [PATCH] in emails, wrap html and images in a multipart/mixed structure * contrib/lisp/org-mime.el (org-mime-file): Mark images included as part of html portions as "disposition=inline". (org-mime-multipart): When images are present wrap html and images in a multipart/mixed structure. (org-mime-htmlize): When images are present wrap html and images in a multipart/mixed structure. --- contrib/lisp/org-mime.el | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/contrib/lisp/org-mime.el b/contrib/lisp/org-mime.el index 27c8ffd1d..fc333bef3 100644 --- a/contrib/lisp/org-mime.el +++ b/contrib/lisp/org-mime.el @@ -132,13 +132,13 @@ exported html." (defun org-mime-file (ext path id) "Markup a file for attachment." (case org-mime-library - ('mml (format - "<#part type=\"%s\" filename=\"%s\" id=\"<%s>\">\n<#/part>\n" - ext path id)) + ('mml (format (concat "<#part type=\"%s\" filename=\"%s\" " + "disposition=inline id=\"<%s>\">\n<#/part>\n") + ext path id)) ('semi (concat - (format - "--[[%s\nContent-Disposition: inline;\nContent-ID: <%s>][base64]]\n" - ext id) + (format (concat "--[[%s\nContent-Disposition: " + "inline;\nContent-ID: <%s>][base64]]\n") + ext id) (base64-encode-string (with-temp-buffer (set-buffer-multibyte nil) @@ -146,17 +146,26 @@ exported html." (buffer-string))))) ('vm "?"))) -(defun org-mime-multipart (plain html) - "Markup a multipart/alternative with text/plain and text/html - alternatives." +(defun org-mime-multipart (plain html &optional images) + "Markup a multipart/alternative with text/plain and text/html alternatives. +If the html portion of the message includes images wrap the html +and images in a multipart/related part." (case org-mime-library - ('mml (format (concat "<#multipart type=alternative><#part type=text/plain>" - "%s<#part type=text/html>%s<#/multipart>\n") - plain html)) + ('mml (concat "<#multipart type=alternative><#part type=text/plain>" + plain + (when images "<#multipart type=related>") + "<#part type=text/html>" + html + images + (when images "<#/multipart>\n") + "<#/multipart>\n")) ('semi (concat "--" "<>-{\n" "--" "[[text/plain]]\n" plain + (when images (concat "--" "<>-{\n")) "--" "[[text/html]]\n" html + images + (when images (concat "--" "}-<>\n")) "--" "}-<>\n")) ('vm "?"))) @@ -220,8 +229,8 @@ export that region, otherwise export the entire body." (delete-region html-start html-end) (save-excursion (goto-char html-start) - (insert (org-mime-multipart body html) - (mapconcat 'identity html-images "\n"))))) + (insert (org-mime-multipart + body html (mapconcat 'identity html-images "\n")))))) (defun org-mime-apply-html-hook (html) (if org-mime-html-hook