+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):
(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)
(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))))