]> git.eshelyaron.com Git - emacs.git/commitdiff
Don’t double-encode non-ASCII mail clipboard
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 14 Sep 2015 21:09:24 +0000 (14:09 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 14 Sep 2015 21:09:51 +0000 (14:09 -0700)
* lisp/mail/mailclient.el (mailclient-send-it):
Also fix the case when mailclient-place-body-on-clipboard-flag
is non-nil.  Problem reported by Eli Zaretskii (Bug#21471#37).

lisp/mail/mailclient.el

index bef20380b33560c5ab28917149e52c59fd6950f9..2fb944bdc76e4d3f604f519ddf48e7769a5bad49 100644 (file)
@@ -175,37 +175,31 @@ The mail client is taken to be the handler of mailto URLs."
                               (mailclient-encode-string-as-url subj))
                     ""))))
              ;; body
-             (concat
-              (mailclient-url-delim) "body="
-              (mailclient-encode-string-as-url
-               (if mailclient-place-body-on-clipboard-flag
-                   (progn
-                     (clipboard-kill-ring-save
-                      (+ 1 delimline) (point-max))
-                     (concat
-                      "*** E-Mail body has been placed on clipboard, "
-                      "please paste it here! ***"))
-                 ;; else
-                 (let ((body (buffer-substring (+ 1 delimline) (point-max))))
-                   (if (null character-coding)
-                       body
-                     ;; mailto: requires UTF-8 and cannot deal with
-                     ;; Content-Transfer-Encoding or Content-Type.
-                     ;; FIXME: There is a lot of code duplication here
-                     ;; with rmail.el.
-                     (erase-buffer)
-                     (set-buffer-multibyte nil)
-                     (insert body)
-                     (cond
-                      ((string= character-coding "quoted-printable")
-                       (mail-unquote-printable-region (point-min) (point-max)
-                                                      nil nil 'unibyte))
-                      ((string= character-coding "base64")
-                       (base64-decode-region (point-min) (point-max)))
-                      (t (error "unsupported Content-Transfer-Encoding: %s"
-                                character-coding)))
-                     (decode-coding-region (point-min) (point-max)
-                                           coding-system t)))))))))))))
+             (mailclient-url-delim) "body="
+             (progn
+               (delete-region (point-min) delimline)
+               (unless (null character-coding)
+                 ;; mailto: and clipboard need UTF-8 and cannot deal with
+                 ;; Content-Transfer-Encoding or Content-Type.
+                 ;; FIXME: There is code duplication here with rmail.el.
+                 (set-buffer-multibyte nil)
+                 (cond
+                  ((string= character-coding "base64")
+                   (base64-decode-region (point-min) (point-max)))
+                  ((string= character-coding "quoted-printable")
+                   (mail-unquote-printable-region (point-min) (point-max)
+                                                  nil nil t))
+                  (t (error "unsupported Content-Transfer-Encoding: %s"
+                            character-coding)))
+                 (decode-coding-region (point-min) (point-max) coding-system))
+               (mailclient-encode-string-as-url
+                (if mailclient-place-body-on-clipboard-flag
+                    (progn
+                      (clipboard-kill-ring-save (point-min) (point-max))
+                      (concat
+                       "*** E-Mail body has been placed on clipboard, "
+                       "please paste it here! ***"))
+                  (buffer-string)))))))))))
 
 (provide 'mailclient)