1. ホーム
  2. python

[解決済み] Python : 生のメールに "Body "タグがない場合のBodyのパース方法

2023-02-15 19:29:05

質問

を取得するのは簡単なようです。

From
To
Subject

などを経由して

import email
b = email.message_from_string(a)
bbb = b['from']
ccc = b['to']

と仮定して "a" は生のメール文字列で、次のようなものです。

a = """From [email protected] Thu Jul 25 19:28:59 2013
Received: from a1.local.tld (localhost [127.0.0.1])
    by a1.local.tld (8.14.4/8.14.4) with ESMTP id r6Q2SxeQ003866
    for <[email protected]>; Thu, 25 Jul 2013 19:28:59 -0700
Received: (from root@localhost)
    by a1.local.tld (8.14.4/8.14.4/Submit) id r6Q2Sxbh003865;
    Thu, 25 Jul 2013 19:28:59 -0700
From: [email protected]
Subject: oooooooooooooooo
To: [email protected]
Cc: 
X-Originating-IP: 192.168.15.127
X-Mailer: Webmin 1.420
Message-Id: <1374805739.3861@a1>
Date: Thu, 25 Jul 2013 19:28:59 -0700 (PDT)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="bound1374805739"

This is a multi-part message in MIME format.

--bound1374805739
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

ooooooooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooooo

--bound1374805739--"""

質問

をどのように取得するのですか? Body をどのように取得するのですか?

今のところ、これは私が知っている唯一のコードですが、私はまだそれをテストしていません。

if email.is_multipart():
    for part in email.get_payload():
        print part.get_payload()
else:
    print email.get_payload()

は正しい方法ですか?

それとも、もっと簡単な方法があるのでしょうか?

import email
b = email.message_from_string(a)
bbb = b['body']

?

どのように解決するのですか?

使用方法 メッセージ.get_payload

b = email.message_from_string(a)
if b.is_multipart():
    for payload in b.get_payload():
        # if payload.is_multipart(): ...
        print payload.get_payload()
else:
    print b.get_payload()