我尝试将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
答案 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])