diff Lib/email/Message.py @ 24912:0ee48aefa474 legacy-trunk

get_content_type(), get_content_maintype(), get_content_subtype(): RFC 2045, section 5.2 states that if the Content-Type: header is syntactically invalid, the default type should be text/plain. Implement minimal sanity checking of the header -- it must have exactly one slash in it. This closes SF patch #597593 by Skip, but in a different way. Note that these methods used to raise ValueError for invalid ctypes, but now they won't.
author Barry Warsaw <barry@python.org>
date Tue, 20 Aug 2002 14:50:09 +0000
parents 8b4a165baaee
children c744144c4049
line wrap: on
line diff
--- a/Lib/email/Message.py	Tue Aug 20 14:47:30 2002 +0000
+++ b/Lib/email/Message.py	Tue Aug 20 14:50:09 2002 +0000
@@ -422,7 +422,11 @@
         if value is missing:
             # This should have no parameters
             return self.get_default_type()
-        return paramre.split(value)[0].lower().strip()
+        ctype = paramre.split(value)[0].lower().strip()
+        # RFC 2045, section 5.2 says if its invalid, use text/plain
+        if ctype.count('/') <> 1:
+            return 'text/plain'
+        return ctype
 
     def get_content_maintype(self):
         """Returns the message's main content type.
@@ -432,8 +436,6 @@
         ValueError is raised.
         """
         ctype = self.get_content_type()
-        if ctype.count('/') <> 1:
-            raise ValueError, 'No maintype found in: %s' % ctype
         return ctype.split('/')[0]
 
     def get_content_subtype(self):
@@ -444,8 +446,6 @@
         ValueError is raised.
         """
         ctype = self.get_content_type()
-        if ctype.count('/') <> 1:
-            raise ValueError, 'No subtype found in: %s' % ctype
         return ctype.split('/')[1]
 
     def get_default_type(self):