12

私はPythonを初めて使用し、Pythonのimaplibと電子メールを介してgmailから電子メールを解析しようとしています。かなりうまく機能していますが、メールの添付ファイルに問題があります。

他のすべての添付ファイルを削除して保存しながら、セカンダリ コンテンツ タイプとして挿入される可能性のある HTML を無視して、電子メールからすべてのプレーンテキストを解析したいと考えています。私は次のことを試しています:

...imaplib connection and mailbox selection...

typ, msg_data = c.fetch(num, '(RFC822)')
        email_body = msg_data[0][1]
mail = email.message_from_string(email_body)
        for part in mail.walk():
            if part.get_content_type() == 'text/plain':
                body = body + '\n' + part.get_payload()
            else:
                continue

これは、電子メールのプレーンテキスト部分だけを取得する最初の試みでしたが、誰かがテキスト添付ファイル付きの電子メールを送信すると、テキスト ファイルの内容が上記の「本文」変数に表示されます。

他のすべての種類の添付ファイルをファイルとして保存しながら、時々存在するセカンダリ HTML を無視して、電子メールのプレーンテキスト部分を抽出する方法を教えてもらえますか? これがあまり意味をなさない場合はお詫び申し上げます。必要に応じて、質問をより明確に更新します。

4

1 に答える 1

11

そこにあるものと一緒にテキストの添付ファイルをbody変数から除外する必要がある場合は、次のように簡単にする必要があります。

mail = email.message_from_string(email_body)
    for part in mail.walk():
        c_type = part.get_content_type()
        c_disp = part.get('Content-Disposition')

        if c_type == 'text/plain' and c_disp == None:
            body = body + '\n' + part.get_payload()
        else:
            continue

part.get_filename()次に、Content-Disposition が添付ファイルであることを示している場合、ファイルを使用して処理できるはずpart.get_payload()です。これが変化する可能性があるかどうかはわかりませんが、基本的には、過去にメール サーバーとのインターフェイスとして使用したものです。

于 2011-06-07T19:07:20.083 に答える