2012-05-12 39 views
2

我有以下代码:Python - 预期的字符缓冲区对象?

import imaplib 
import email 
import codecs 
mail = imaplib.IMAP4_SSL('imap.gmail.com') 
mail.login('[email protected]', 'pass') 
mail.list() 

mail.select("inbox") 

result, data = mail.uid('search', None, "ALL") 
i = len(data[0].split()) 

for x in range(i): 
    latest_email_uid = data[0].split()[x] 
    result, email_data = mail.uid('fetch', latest_email_uid, '(RFC822)') 
    raw_email = email_data[0][1] 
    email_message = email.message_from_string(raw_email) 
    save_string = str("/Users/Me/Desktop/Email/" + str(x) + ".txt") 
    myfile = open(save_string, 'a') 
    myfile.write(email_message) 
    myfile.close() 

(我想所有的电子邮件导出为txt文件。)

我得到的错误expected a character buffer object

有谁知道这是为什么?

感谢

编辑:错误是线myfile.write(email_message)

+0

Stacktrace请。异常发生在哪一行?哦,它是蟒蛇2还是蟒蛇3? – ThiefMaster

+1

我想这是因为'email.message_from_string(raw_email)'不是返回一个字符串,而是一个'Message'对象。 – ubik

+0

@ThiefMaster我已经添加了该行。它是Python 2。 (我认为:() – samiles

回答

6

email.message_from_string(raw_email)没有返回一个字符串,而是一个Message对象,而不是。您不能直接将Message对象写入文件,而无法以某种方式对它们进行序列化。

5

您所要做的就是将email_message转换为字符串。

myfile.write(str(email_message)) 
相关问题