mimetools.Message()到python 3 email.message.Message

时间:2013-11-22 07:28:44

标签: python python-3.x python-2.x

我尝试将python 2.x代码移植到python 3。 我喜欢的线是

from mimetools import Message
...
headers = Message(StringIO(data.split('\r\n', 1)[1]))

我已经发现python 3中不再存在mimetools,而且替换是电子邮件类。 我试着像这样替换它:

headers = email.message_from_file(io.StringIO(data.split('\r\n', 1)[1]))

但是我得到了这个错误:

    headers = email.message_from_file(io.StringIO(data.split('\r\n', 1)[1]))
TypeError: Type str doesn't support the buffer API

我正在寻找提示从mimetools移植到正确的电子邮件。 原始代码不是来自我。在这里能找到它 : https://gist.github.com/jkp/3136208

2 个答案:

答案 0 :(得分:2)

亚历克斯自己的评论中提出了自己的解决方案:

import email
stream = io.StringIO() 
rxString = data.decode("utf-8").split('\r\n', 1)[1]
stream.write(rxString) 
headers = email.message_from_string(rxString)

答案 1 :(得分:0)

找到短期解决方案

from email import message_from_string    
data = socket.recv(4096)
headers = message_from_string(str(data, 'ASCII').split('\r\n', 1)[1])