'Set the main type and subtype for the Content-Type header.
type must be a string in the form "maintype/subtype", otherwise a
ValueError is raised.
This method replaces the Content-Type header, keeping all the
parameters in place.  If requote is False, this leaves the existing
header\'s quoting as is.  Otherwise, the parameters will be quoted (the
default).
An alternative header can be specified in the header argument.  When
the Content-Type header is set, we\'ll always also add a MIME-Version
header.'

def set_type(self, type, header='Content-Type', requote=True):

    if (not (type.count('/') == 1)):
        raise ValueError
    if (header.lower() == 'content-type'):
        del self['mime-version']
        self['MIME-Version'] = '1.0'
    if (header not in self):
        self[header] = type
        return
    params = self.get_params(header=header, unquote=requote)
    del self[header]
    self[header] = type
    for (p, v) in params[1:]:
        self.set_param(p, v, header, requote)
