Python - 期望一个字符缓冲对象?

时间:2012-05-12 16:48:28

标签: python email imap

我有以下代码:

import imaplib
import email
import codecs
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('email@gmail.com', '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)

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

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

myfile.write(str(email_message))