diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2015-09-14 14:09:24 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2015-09-14 14:09:51 -0700 |
commit | b5a3626f316d2c0f1196a9718e51462c09a14568 (patch) | |
tree | ed3f7ff147dc1f1ac7f90653f305289f51e3ddb5 | |
parent | 67ddc7c55d6b40e3d37b2773e002a50123ae7411 (diff) | |
download | emacs-b5a3626f316d2c0f1196a9718e51462c09a14568.tar.gz |
Don’t double-encode non-ASCII mail clipboard
* 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).
-rw-r--r-- | lisp/mail/mailclient.el | 56 |
1 files changed, 25 insertions, 31 deletions
diff --git a/lisp/mail/mailclient.el b/lisp/mail/mailclient.el index bef20380b33..2fb944bdc76 100644 --- a/lisp/mail/mailclient.el +++ b/lisp/mail/mailclient.el @@ -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) |