如何在Python中生成带有正确CRLF的multipart/mime消息?

5 投票
2 回答
2406 浏览
提问于 2025-04-16 00:15

我需要生成一个多部分的MIME消息,以便作为HTTP请求的响应发送,但在使用Python的email.*包时遇到了一个错误或限制。

问题是,在使用Python 2.6时,下面的message.as_string()调用生成的字符串使用的是\n作为换行符,而不是CRLF:

message = MIMEMultipart()
for image in images:
    f = image.open('rb')
    img = MIMEImage(f.read(), _encoder=encode_7or8bit)
    message.attach(img)


message.as_string()

似乎没有办法让它使用符合MIME标准的CRLF。看起来应该能做到这一点的Generator类,实际上却做不到。

其他人是怎么解决这个问题的呢?

2 个回答

2

那我们来看看一个简单的解决办法

message.as_string().replace('\n', '\r\n')

虽然这个方法不太优雅,但应该能奏效(同时也应该在Python的反馈系统上提交一个bug报告)。

3

这是Python中的一个错误,现在已经修复了:http://hg.python.org/lookup/r85811

现在应该可以在非邮件的传输方式上使用MIME库,并且会有合理的结果发生。

撰写回答