web-dev-qa-db-ja.com

pythonメールボックスを使用してmboxファイルのメールコンテンツを読み取る

Pythonメールボックスを使用して、メールの内容(メール本文)を印刷しようとしています。

import mailbox

mbox = mailbox.mbox('Inbox')
i=1
for message in mbox:
    print i
    print "from   :",message['from']
    print "subject:",message['subject']
    print "message:",message['**messages**']
    print "**************************************" 
    i+=1

しかし、message ['messages']は、ここにメールの内容を印刷するのに適切ではないようです。 ドキュメント から理解できませんでした

16
Technopolice

メッセージの内容を取得するには、 get_payload() を使用します。 _mailbox.Message__email.message.Message_ のサブクラスです。 is_multipart() も確認する必要があります。これは、get_payload()の戻り値に影響するためです。例:

_if message.is_multipart():
    content = ''.join(part.get_payload(decode=True) for part in message.get_payload())
else:
    content = message.get_payload(decode=True)
_
16
user369450
def getbody(message): #getting plain text 'email body'
    body = None
    if message.is_multipart():
        for part in message.walk():
            if part.is_multipart():
                for subpart in part.walk():
                    if subpart.get_content_type() == 'text/plain':
                        body = subpart.get_payload(decode=True)
            Elif part.get_content_type() == 'text/plain':
                body = part.get_payload(decode=True)
    Elif message.get_content_type() == 'text/plain':
        body = message.get_payload(decode=True)
    return body

本文がプレーンテキストの場合、この関数はメッセージ本文を提供します。

14
jOSe