Fix detection of MIME type in message_parse()
authorJean-Baptiste Quenot <jbq@cmlid.fr>
Wed, 28 May 2014 13:45:29 +0000 (15:45 +0200)
committerJean-Baptiste Quenot <jbq@cmlid.fr>
Mon, 2 Jun 2014 09:48:30 +0000 (11:48 +0200)
Be careful, content-type may contain tricky content like in the
following example so test the MIME type with startswith()

Content-Type: multipart/related;
  boundary="_004_3f1e4da175f349248b8d43cdeb9866f1AMSPR06MB343eurprd06pro_";
  type="text/html"

addons/mail/mail_thread.py

index 90ae3cf..942dadd 100644 (file)
@@ -780,7 +780,14 @@ class mail_thread(osv.AbstractModel):
         body = u''
         if save_original:
             attachments.append(('original_email.eml', message.as_string()))
-        if not message.is_multipart() or 'text/' in message.get('content-type', ''):
+
+        # Be careful, content-type may contain tricky content like in the
+        # following example so test the MIME type with startswith()
+        #
+        # Content-Type: multipart/related;
+        #   boundary="_004_3f1e4da175f349248b8d43cdeb9866f1AMSPR06MB343eurprd06pro_";
+        #   type="text/html"
+        if not message.is_multipart() or message.get('content-type', '').startswith("text/"):
             encoding = message.get_content_charset()
             body = message.get_payload(decode=True)
             body = tools.ustr(body, encoding, errors='replace')