-;;; mm-encode.el --- Functions for encoding MIME things
-;; Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+;;; mm-encode.el --- Functions for encoding MIME things
+;; Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
("message/rfc822" 8bit)
("application/emacs-lisp" 8bit)
("application/x-patch" 8bit)
- (".*" qp-or-base64))
+ (".*" base64))
"Alist of regexps that match MIME types and their encodings.
If the encoding is `qp-or-base64', then either quoted-printable
or base64 will be used, depending on what is more efficient.")
(defun mm-encode-content-transfer-encoding (encoding &optional type)
(cond
((eq encoding 'quoted-printable)
- (quoted-printable-encode-region (point-min) (point-max) t))
+ (mm-with-unibyte-current-buffer-mule4
+ (quoted-printable-encode-region (point-min) (point-max) t)))
((eq encoding 'base64)
(when (equal type "text/plain")
(goto-char (point-min))
(bits (mm-body-7-or-8)))
;; We force buffers that are 7bit to be unencoded, no matter
;; what the preferred encoding is.
- (when (eq bits '7bit)
+ ;; Only if the buffers don't contain lone lines.
+ (when (and (eq bits '7bit) (not (mm-long-lines-p 76)))
(setq encoding bits))
(mm-encode-content-transfer-encoding encoding mime-type)
encoding))
(while rules
(when (string-match (caar rules) type)
(throw 'found
- (let ((encoding
+ (let ((encoding
(if (eq (cadr (car rules)) 'qp-or-base64)
(mm-qp-or-base64)
(cadr (car rules)))))
(incf n8bit)
(forward-char 1)
(skip-chars-forward "\x20-\x7f\r\n\t" limit))
- (if (< (* 6 n8bit) (- limit (point-min)))
+ (if (or (< (* 6 n8bit) (- limit (point-min)))
+ ;; Don't base64, say, a short line with a single
+ ;; non-ASCII char when splitting parts by charset.
+ (= n8bit 1))
'quoted-printable
'base64))))