2

次のコードがあります。

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)

4

2 に答える 2

6

email.message_from_string(raw_email)文字列を返すのではなく、Message代わりにオブジェクトを返します。Messageオブジェクトをなんらかの方法でシリアル化せずにファイルに直接書き込むことはできません。

于 2012-05-12T16:59:29.673 に答える
5

email_message文字列に変換するだけです。

myfile.write(str(email_message))
于 2013-03-27T04:09:09.340 に答える