]> git.phdru.name Git - mimedecode.git/blobdiff - mimedecode.py
Convert body to the current charset for mailcap filter
[mimedecode.git] / mimedecode.py
index 62097e4808096650298dfe1070bde0e8da690c44..e7381f78cdb495bc9a1aa765ef4c2ca116098fc1 100755 (executable)
@@ -32,7 +32,11 @@ def output_headers(msg):
     for key, value in msg.items():
         output(key)
         output(": ")
-        output(value)
+        value = value.split(';', 1)
+        output(value[0])
+        if len(value) == 2:
+            output(";")
+            output(_decode_header(value[1], strip=False))
         output(os.linesep)
     output(os.linesep) # End of headers
 
@@ -214,6 +218,10 @@ def decode_body(msg, s):
         caps = mailcap.getcaps()
 
     content_type = msg.get_content_type()
+    if content_type.startswith('text/'):
+        charset = msg.get_content_charset()
+    else:
+        charset = None
     filename = tempfile.mktemp()
     command = None
 
@@ -231,6 +239,8 @@ def decode_body(msg, s):
         return s
 
     outfile = open(filename, 'wb')
+    if charset and isinstance(s, bytes):
+        s = s.decode(charset, "replace")
     if not isinstance(s, bytes):
         s = s.encode(g.default_encoding, "replace")
     outfile.write(s)