python3.6で、以下のコードを用いて、マルチパートメールの生データを解析しています。
import imaplib import email gmail = imaplib.IMAP4_SSL("imap.gmail.com") gmail.login("myaddress@gmail.com","mypassword") gmail.select('INBOX',readonly=True) typ, [data] = gmail.search(None,'(UNSEEN)') for num in data.split(): result, d = gmail.fetch(num,"(RFC822)") raw_email = d[0][1] msg = email.message_from_string(raw_email.decode()) #本文の取得 body = "" #マルチパートメールの処理 if msg.is_multipart(): body = msg.get_payload() print("msg = ",msg) else: #シングルパートメールの本文取得処理 gmail.close() gmail.logout()
その結果、以下の様なデータが得られます。
マルチパートを区切るキーワードが、boundary=の後ろに書かれているのは分かるのですが、どうすれば、このキーワード部分の情報(文字列)を取得できるでしょうか?
また、それを用いて、キーワードで挟まれているtext/plainメール部分の本文である、44OG44K544OI44Oh44O844OrDQo=を抜き出す方法もご教示下さい。
* 特定のキーワード(ここではboundary=)の後ろに来る文字列を取得する方法や、特定のキーワードで挟まれた部分を取得する方法がありそうな気がするのですが、自分では分かりませんでした。
出力結果(一部) msg=........ ....... boundary="000000000000c72c1f05774c4e72" --000000000000c72c1f05774c4e72 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 44OG44K544OI44Oh44O844OrDQo= --000000000000c72c1f05774c4e72 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+44OG44K544OI44Oh44O844OrPGRpdj48YnI+PC9kaXY+PC9kaXY+DQo= --000000000000c72c1f05774c4e72--
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/04 05:48