                      mimetype = DEFAULT_ATTACHMENT_MIME_TYPE
              basetype, subtype = mimetype.split('/', 1)
  
              if basetype == 'text':
                  if isinstance(content, six.binary_type):
                      try:
                          content = content.decode('utf-8')
                      except UnicodeDecodeError:
                          # If mimetype suggests the file is text but it's actually
                          # binary, read() will raise a UnicodeDecodeError on Python 3.
 
</s> remove         if isinstance(ds_input, six.string_types):
 </s> add         if isinstance(ds_input, str): </s> remove         if value and isinstance(value, six.string_types):
 </s> add         if value and isinstance(value, str): </s> remove         if isinstance(file, six.string_types):
 </s> add         if isinstance(file, str): </s> remove         elif isinstance(srs_input, six.string_types):
 </s> add         elif isinstance(srs_input, str): </s> remove         if isinstance(ds_input, six.string_types):
 </s> add         if isinstance(ds_input, str):
                if isinstance(content, bytes):
                      mimetype = DEFAULT_ATTACHMENT_MIME_TYPE
              basetype, subtype = mimetype.split('/', 1)
  
              if basetype == 'text':
                if isinstance(content, bytes):
                      try:
                          content = content.decode('utf-8')
                      except UnicodeDecodeError:
                          # If mimetype suggests the file is text but it's actually
                          # binary, read() will raise a UnicodeDecodeError on Python 3.
keep keep keep keep replace keep keep keep keep keep
 Refs #23919 -- Removed six.<various>_types usage

Thanks Tim Graham and Simon Charette for the reviews. 
django/core/mail/message.py