python - 在 Python 中使用二进制数据对 MIME 多部分进行编码?

标签 python python-2.7 mime

如何在 Python 中构造 MIME 多部分消息?我已经尝试过 Python 的 email 包,但它似乎已损坏 - 它无法正确执行二进制部分(将其 Content-Transfer-Encoding 设置为 base64 并保留数据为二进制)。请注意,对于我的应用程序来说,实际数据是二进制编码的,而不是 base64 编码,这一点非常重要。我需要最小化尺寸。

这是我尝试过的代码。

from email import message, mime, generator, encoders
from email.mime import multipart, text, image
from cStringIO import StringIO
import os

m = multipart.MIMEMultipart( "related" )

part = text.MIMEText( "text", "plain" )
part.set_payload( "hello" )
part.add_header( 'Content-Disposition', 'asset', name='abc' )
m.attach( part )

part = image.MIMEImage( "image", "x-other" )
part.set_payload( os.urandom(200) )
m.attach( part )

fp = StringIO()
g = generator.Generator( fp, mangle_from_ = False, maxheaderlen = 1000 )
g.flatten(m)
print( fp.getvalue() )

最佳答案

您可以强制使用您想要的 Content-Transfer-Encoding,如下所示:

part = image.MIMEImage( "image", "x-other", encoders.encode_noop )
part.set_payload( os.urandom(200) )
part.add_header( 'Content-Transfer-Encoding', 'binary' )
m.attach( part )

关于python - 在 Python 中使用二进制数据对 MIME 多部分进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22206070/

相关文章:

python sqlite插入命名参数或null

python-2.7 - Scrapy::转储到 json 文件时出现编码问题

Python:如何更改 smtp/MIME 脚本中的 "to"字段而不是添加新字段?

mime - 在字段正文的开头折叠 MIME header 是否有效?

python-2.7 - Virtualenv 导入 Numpy 时遇到问题

java - 什么是 MIME 类型的数据?

python - SQL Alchemy IN 查询中出现 PG8000 异常 : invalid input syntax for type integer: "{2,3,5,6,7}"

python - 求多项式的导数

python - 使用 Python 进行 base64 解码,附件通过基于 REST 的 Gmail API 下载

python - `tabulate` 按键排序列