python解析文本/纯emai

2024-03-28 23:28:17 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一封这样的邮件:

From hostname Tue Jun 15 21:43:30 2010
Received: (qmail 8580 invoked from network); 15 Jun 2010 21:43:22 -0400
Received: from mail-fx0-f44.google.com (209.85.161.44)
by ip-73-187-35-131.ip.secureserver.net with SMTP; 15 Jun 2010 21:43:22 -0400
Received: by fxm19 with SMTP id 19so170709fxm.3
for <username@domain.com>; Tue, 15 Jun 2010 18:47:33 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.103.84.1 with SMTP id m1mr2774225mul.26.1276652853684; Tue, 15
Jun 2010 18:47:33 -0700 (PDT)
Received: by 10.123.143.4 with HTTP; Tue, 15 Jun 2010 18:47:33 -0700 (PDT)
Date: Tue, 15 Jun 2010 20:47:33 -0500
Message-ID: <AANLkTikFsIjJ3KYW1HJWcAqQlGXNiXE2YMzrj39I0tdB@mail.gmail.com>
Subject: TEST 12
From: Full Name <username@sender.com>
To: username@domain.com
Content-Type: text/plain; charset=ISO-8859-1

ONE
TWO
THREE

我知道我可以使用msg = email.message_from_string(str)msg['To']来获得username@domain.com,但是如何识别底部的“一二三”?奖金!如何识别顶部的所有“接收:”k/v对?当我尝试时:

msg['Received'] 

我只得到第一个。我怎么才能得到第二个呢?你知道吗


Tags: fromipcombydomainwithusernamemail
2条回答

我可以用以下代码从邮件正文中识别“一二三”:

msg.get_payload()

啊,我!你知道吗

这只涉及“奖金”:您可以使用msg.get_all('Received')。你知道吗

>>> msg.get_all('Received')
['(qmail 8580 invoked from network); 15 Jun 2010 21:43:22 -0400', 'from mail-fx0-f44.google.com (209.85.161.44)']
>>> msg.get_all('Received')[1]
'from mail-fx0-f44.google.com (209.85.161.44)'

请注意,您可以在解释器中探索dir(msg)help(msg)。你知道吗

相关问题 更多 >