Python MIME Base64编码

2024-06-26 10:16:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要生成一个包含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}$

然而,这并没有改变数据的结果。如果有人对如何允许这样做有任何想法,那就太好了。在


Tags: 文件代码obj编码附件typemsgmime
1条回答
网友
1楼 · 发布于 2024-06-26 10:16:31

我注意到在第二个示例代码的倒数第二行中,您调用了msg_atch.strip()函数。这样做的问题是,没有MIMEBase的任何函数strip()。在

你可能想做的事情是这样的:

msg_obj = MIMEMultipart()
msg_atch = MIMEBase(mime_type, mime_subtype)
msg_atch.set_payload(file_data)
Encoders.encode_base64(msg_atch)
msg_atch._payload = msg_atch._payload.replace('\n','')
msg_obj.attach(msg_atch)

MIMEBase._payload字符串是附件使用的实际内容(在本例中为base64)。在

这段代码将获取MIMEBase附件的内部内容并消除额外的换行符—包括内部的换行符,以便为“人类可读性”提供base64文本的良好格式(我的问题是它们为什么会这么麻烦)。如果您只想去掉末尾的换行符,只需使用msg_atch._payload = msg_atch._payload.rstrip('\n')。在

请记住,附件的头(Content-Type: application/octet-streamMIME-Version: 1.0是部分)需要这些新行。在

另外,请记住,通常不应该以这种方式编辑内部变量。然而,我发现Python的一个优点是它实际上没有类的私有成员,因此可以在类中修改您想要的任何内容。我们可以为所欲为,特别是在特殊情况下。在

编码快乐!在

相关问题 更多 >