qp.mail.send.sendmail() does not output a content-type header, unless the extra_headers parameter is specified... and this even if the separate parameter mime_type is specifically supplied. These current lines of code: if extra_headers: email.set_extra_headers( extra_headers + [ "Content-Type: %s; charset=%s" % (mime_type, charset)]) should probably be changed to something like, such that a content-type header is output independently of any extra_headers specified: extra_headers = extra_headers or [] extra_headers.append("Content-Type: %s; charset=%s" % (mime_type, charset)) email.set_extra_headers(extra_headers)