繁体   English   中英

在Python中用二进制数据编码MIME片段?

[英]Encode MIME multipart with binary data in Python?

如何在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 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM