我需要生成一个包含Base64编码文件的MIME附件。不过,我还需要考虑的是编码附件,而不需要任何新行。我的代码如下:
msg_obj = MIMEMultipart()
msg_atch = MIMEBase(mime_type, mime_subtype)
msg_atch.set_payload(file_data)
Encoders.encode_base64(msg_atch)
msg_obj.attach(msg_atch)
为了删除attach base64消息中的新行,我尝试执行以下操作:
^{pr2}$然而,这并没有改变数据的结果。如果有人对如何允许这样做有任何想法,那就太好了。在
我注意到在第二个示例代码的倒数第二行中,您调用了
msg_atch.strip()
函数。这样做的问题是,没有MIMEBase
的任何函数strip()
。在你可能想做的事情是这样的:
MIMEBase._payload
字符串是附件使用的实际内容(在本例中为base64)。在这段代码将获取MIMEBase附件的内部内容并消除额外的换行符—包括内部的换行符,以便为“人类可读性”提供base64文本的良好格式(我的问题是它们为什么会这么麻烦)。如果您只想去掉末尾的换行符,只需使用
msg_atch._payload = msg_atch._payload.rstrip('\n')
。在请记住,附件的头(
Content-Type: application/octet-stream
和MIME-Version: 1.0
是部分)需要这些新行。在另外,请记住,通常不应该以这种方式编辑内部变量。然而,我发现Python的一个优点是它实际上没有类的私有成员,因此可以在类中修改您想要的任何内容。我们可以为所欲为,特别是在特殊情况下。在
编码快乐!在
相关问题 更多 >
编程相关推荐