You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MIME multipart/mixed原生二进制支持及Python解码合理性咨询

问题

我不确定MIME multipart/mixed是否标准支持未经过base64编码的原生二进制数据,尤其是用Python解码时遇到了问题。我的代码如下:

msg = email.message_from_binary_file(fp, policy=email.policy.HTTP)

for part in msg.walk():
    if part.get_content_maintype() == 'multipart':
         continue

    filename = part.get_filename()
    payload = part.get_content()

获取到的payload被做了文本处理(比如0x13被转为0x10),这直接损坏了数据。想问下有没有办法切换到纯二进制模式?是不是应该对数据进行base64编码?对应的MIME格式如下:

Content-Type: multipart/mixed;boundary=123456789000000000000987654321
Transfer-Encoding: chunked


--123456789000000000000987654321
Content-Type: image/jpeg
Content-transfer-encoding: binary
Content-Disposition: attachment; filename="2024-02-08T000418.jpg"
Content-Length: 23302

<binary data>
--123456789000000000000987654321

2024年2月8日更新

  • RFC 2045指出:“Content-Transfer-Encoding中的‘binary’表示未执行任何编码转换”
  • RFC 2045指出:“在互联网邮件中,‘binary’编码在任何情况下都不合法”
  • RFC 2045定义的编码机制:
mechanism := "7bit" / "8bit" / "binary" /
             "quoted-printable" / "base64" /
  • Python的email.message_from_bytes调用不会修改回车符(CR)
  • 文件对象fp确实是以二进制模式打开的

基于以上信息,我得出以下结论:

  • Content-transfer-encoding: base64是标准支持的
  • 由于Python的email模块是邮件处理机制,严格遵循了上述RFC中“互联网邮件中禁止使用binary编码”的规定
  • 假设这份已有28年历史的RFC仍然有效,或许不能说Python email模块存在bug,但我认为email.message_from_binary_file确实无法正确处理二进制文件

请问我的逻辑是否合理?


内容的提问来源于stack exchange,提问作者Malachi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:12:50