2012-05-12 40 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)) 
相關問題