0

取得している電子メールのデコードに問題があります。

スクリプトは電子メール アカウントにログオンし、未読メッセージを取得し、後でそれらをデータベースに保存する必要があります。メールの実際のテキストだけが必要ですが、html は必要ありません。

多くの例を見つけましたが、どれもうまくいかないようです。私はこれこれと私が見つけたいくつかを試しました。

私が今持っているコード:

import imaplib, sys, email
import email.parser

myparser = email.parser.Parser()
conn = imaplib.IMAP4_SSL(host='mail.something.com')

retcode, capabilities = conn.login('username', 'XXXXX')

conn.select('Inbox', readonly = 1) # Select inbox as read-only
retcode, messages = conn.search(None, '(UNSEEN)')
if retcode == 'OK':
    for message in messages[0].split(' '):
        if message == '':
            continue
         ret, data = conn.fetch(message,'(RFC822)')
         msg = email.message_from_string(data[0][1])
#        rootMessage = myparser.parse(data[0][1])

#        print 'Message %s\n%s\n' % (message, rootMessage)
        print msg
        print '---------------------------------------------------------------' 

 conn.close()

ご覧のとおり、私が試したことはすべて失敗したため、これにはデコードがありません。

私はpythonが初めてなので、誰かが私を正しい方向に導くことができれば、本当に感謝しています。ハッキングは問題ありません。ミッション クリティカルなスクリプトではありませんが、一般的なソリューションが最適です。

-G

アップデート:

エラーはありません。問題は、出力が正しくデコードされていないことです。

入力例:

 This is a test message.

 Gísli

出力:

 This is a test message.

 G=EDsli
4

1 に答える 1

1

これは次のことに役立ちます。

import quopri

print quopri.decodestring(msg).decode('utf8')

またはこれ:

import base64  

body = base64.b64decode(msg) 
于 2012-05-25T13:42:03.100 に答える