2016-11-29 7 views
0

私はPython 3 docs hereを読んでいます。私は盲目的でなければなりません。メッセージの本文をどのように取得するのですか?email.parser.Parserから返されたMessageオブジェクトから1つまたは複数のメッセージ本文を取得する方法は?

私がしたいのは、メッセージを開いてバイナリ添付ファイルをスキップして、メッセージのテキストベースの本体でループを実行することです。擬似コード:

def read_all_bodies(local_email_file): 
    email = Parser().parse(open(local_email_file, 'r')) 
    for pseudo_body in email.pseudo_bodies: 
     if pseudo_body.pseudo_is_binary(): 
      continue 
     # Pseudo-parse the body here 

どうすればよいですか?これはMessageクラスでも正しいクラスですか?ヘッダーだけではないのですか?

答えて

1

は、これが最良の二つの機能を使用して行われます:

  1. 一つは、ファイルを開くために。メッセージがシングルパートの場合、get_payloadはメッセージ内の文字列を返します。

    def parse_file_bodies(filename): 
        # Opens file and parses email 
        email = Parser().parse(open(filename, 'r')) 
        # For multipart emails, all bodies will be handled in a loop 
        if email.is_multipart(): 
         for msg in email.get_payload(): 
          parse_single_body(msg) 
        else: 
         # Single part message is passed diractly 
         parse_single_body(email) 
    
    def parse_single_body(email): 
        payload = email.get_payload(decode=True) 
        # The payload is binary. It must be converted to 
        # python string depending in input charset 
        # Input charset may vary, based on message 
        try: 
         text = payload.decode("utf-8") 
         # Now you can work with text as with any other string: 
         ... 
        except UnicodeDecodeError: 
         print("Error: cannot parse message as UTF-8") 
         return 
    
    :メッセージがマルチパートであれば、これはそれを行うことができますどのようにテキスト/ペイロード

を扱うことが

  • 第2のサブメッセージのリストを返します。
  • 関連する問題