* mm-encode.el (mm-encode-buffer): Don't force 7bit encoding since MTA
authorKatsumi Yamaoka <yamaoka@jpl.org>
Mon, 7 Sep 2009 08:37:39 +0000 (08:37 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Mon, 7 Sep 2009 08:37:39 +0000 (08:37 +0000)
 may break data.  Suggested by Dmitri Paduchikh <dpaduch@k66.ru>.
 Add the optional argument `encoding' that overrides the default.

* mml.el (mml-generate-mime-1): Pass encoding defined by a user to
 mm-encode-buffer.

lisp/ChangeLog
lisp/mm-encode.el
lisp/mml.el

index b3b88fc..44027c1 100644 (file)
@@ -1,3 +1,12 @@
+2009-09-07  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * mm-encode.el (mm-encode-buffer): Don't force 7bit encoding since MTA
+       may break data.  Suggested by Dmitri Paduchikh <dpaduch@k66.ru>.
+       Add the optional argument `encoding' that overrides the default.
+
+       * mml.el (mml-generate-mime-1): Pass encoding defined by a user to
+       mm-encode-buffer.
+
 2009-09-02  Karl Kleinpaste  <karl@kleinpaste.org>
 
        * gnus-art.el (gnus-article-read-summary-keys):
index 39b83ff..0d41caa 100644 (file)
@@ -137,22 +137,19 @@ ENCODING can be: nil (do nothing); one of `quoted-printable', `base64';
    (t
     (error "Unknown encoding %s" encoding))))
 
-(defun mm-encode-buffer (type)
-  "Encode the buffer which contains data of MIME type TYPE.
+(defun mm-encode-buffer (type &optional encoding)
+  "Encode the buffer which contains data of MIME type TYPE by ENCODING.
 TYPE is a string or a list of the components.
+The optional ENCODING overrides the encoding determined according to
+TYPE and `mm-content-transfer-encoding-defaults'.
 The encoding used is returned."
-  (let* ((mime-type (if (stringp type) type (car type)))
-        (encoding
-         (or (and (listp type)
-                  (cadr (assq 'encoding type)))
-             (mm-content-transfer-encoding mime-type)))
-        (bits (mm-body-7-or-8)))
-    ;; We force buffers that are 7bit to be unencoded, no matter
-    ;; what the preferred encoding is.
-    ;; 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)
+  (let ((mime-type (if (stringp type) type (car type))))
+    (mm-encode-content-transfer-encoding
+     (or encoding
+        (setq encoding (or (and (listp type)
+                                (cadr (assq 'encoding type)))
+                           (mm-content-transfer-encoding mime-type))))
+     mime-type)
     encoding))
 
 (defun mm-insert-headers (type encoding &optional file)
index bac8a5a..f397ef2 100644 (file)
@@ -585,7 +585,9 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
                        (unless raw
                          (setq charset (mm-encode-body charset))))
                    (insert contents)))))
-             (setq encoding (mm-encode-buffer type)
+             (if (setq encoding (cdr (assq 'encoding cont)))
+                 (setq encoding (intern (downcase encoding))))
+             (setq encoding (mm-encode-buffer type encoding)
                    coded (mm-string-as-multibyte (buffer-string))))
            (mml-insert-mime-headers cont type charset encoding nil)
            (insert "\n" coded))))