branch: elpa/vm
commit 2b2228464fe7e77b5f2a57606340e2e9feb29edd
Merge: 3ea1764efd f8f0f6c843
Author: Mark Diekhans <[email protected]>
Commit: Mark Diekhans <[email protected]>

    Merge branch '489-forwarding-encoding-v2' into 'main'
    
    Ensure to bytes when needed before transfer encoding
    
    Closes #489
    
    See merge request emacs-vm/vm!67
---
 lisp/vm-mime.el | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/lisp/vm-mime.el b/lisp/vm-mime.el
index 343c3b03f8..a1df66e2ed 100644
--- a/lisp/vm-mime.el
+++ b/lisp/vm-mime.el
@@ -6250,6 +6250,21 @@ quoted-printable or binary).                            
USR, 2011-03-27"
                    (not (memq vm-mime-8bit-text-transfer-encoding
                               '(quoted-printable base64))))
           (setq vm-mime-8bit-text-transfer-encoding 'quoted-printable))
+        ;; Encode charset to bytes before transfer encoding, but only if
+        ;; the content is not already transfer-encoded
+        (let ((current-encoding (downcase (vm-mm-layout-encoding layout))))
+          (when (and (member current-encoding '("7bit" "8bit" "binary"))
+                     (vm-mime-text-type-layout-p layout))
+            (let ((charset (vm-mime-get-parameter layout "charset")))
+              (when charset
+                (let ((coding-system (vm-mime-charset-to-coding charset)))
+                  (unless coding-system
+                    (error "Can't find a coding system for charset %s"
+                           charset))
+                  (encode-coding-region
+                   (vm-mm-layout-body-start layout)
+                   (vm-mm-layout-body-end layout)
+                   coding-system))))))
         (setq encoding
               (vm-mime-transfer-encode-region (vm-mm-layout-encoding layout)
                                               (vm-mm-layout-body-start layout)

Reply via email to