附件有效负载是EnpredPayload类的实例。附件具有编码和可选字符集。前者是指传输编码,例如base64;后者用于字符编码,例如UTF-8(此处的字符集有点过时和误导性的术语)。该
EnpredPayload.depre()方法对传输编码和文本编码都进行解码,正如您所注意到的,如果您只想获取用户附加到其邮件中的原始字节,则该方法不是很有用。
您可以在此处采用多种方法,但是我建议您复制EnpredPayload的逻辑来解码传输编码,如下所示:
if filecontents.encoding and filecontents.encoding.lower() != '7bit': try: payload = filecontents.payload.depre(filecontents.encoding) except LookupError: raise UnknownEncodingError('Unknown decoding %s.' % filecontents.encoding) except (Exception, Error), e: raise PayloadEncodingError('Could not depre payload: %s' % e)else: payload = filecontents.payload请注意,如果附件 是 文本,则在存储附件 时 需要包括字符编码,否则当您将附件发送回用户时将无法解释它-原始文本可能已使用任何字符编码进行了编码。
同样,如果可以的话,您还应该保存附件的模仿类型,但这在API中的任何地方都没有公开。您可能要考虑完全避免使用IncomingMessage类,而是使用Python的mime消息模块对POST请求的主体进行解码。



