1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-26 10:49:33 +00:00

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).
This commit is contained in:
Paul Eggert 2015-09-14 14:09:24 -07:00
parent 67ddc7c55d
commit b5a3626f31

View 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)