3

スクリプトを実行しましょう

python b.wsgi

結果は次のとおりです。

None
None

それが問題であり、ここに完全なスクリプトがありますb.wsgi

aaa = """
From root@a1.local.tld 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 <ooo@a1.local.tld>; 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: root@a1.local.tld
Subject: oooooooooooooooo
To: ooo@a1.local.tld
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

--bound1374805739--
"""

import email
msg = email.message_from_string(aaa)
print msg['From']
print msg['To']

に変更してみました

print msg['from']
print msg['to']

同じ問題。

ここで何が問題なのですか?

この「生の」文字列が私の手で手動で編集されたことをPYTHONが知っている可能性はありますか?

ここで非常に卑劣なことが起こっています。

4

1 に答える 1

5

文字列の\n先頭と末尾が問題の原因です。これを試して

>>> msg = email.message_from_string(aaa.strip())
>>> msg.keys()
['Received', 'Received', 'From', 'Subject', 'To', 'Cc', 'X-Originating-IP', 'X-Mailer', 'Message-Id', 'Date', 'MIME-Version', 'Content-Type']
>>> msg['From']
'root@a1.local.tld'
于 2013-07-26T04:53:29.340 に答える