当前位置: 首页 > 面试题库 >

Python:鉴于原始电子邮件没有“ Body”标签或任何内容,因此如何从原始电子邮件中解析正文

司空浩邈
2023-03-14
问题内容

看起来很容易

From
To
Subject

等通过

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

假设这"a"是原始电子邮件字符串,看起来像这样。

a = """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
ooooooooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooooo

--bound1374805739--"""

问题

您如何Body通过python获取此电子邮件的?

到目前为止,这是我所知道的唯一代码,但我尚未对其进行测试。

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']


问题答案:

使用Message.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()


 类似资料:
  • 我能够通过IMAP连接到Gmail并进行解析,但是在电子邮件正文中,我获得了Gmail特定的内容,例如

  • 我有一个gmail帐户链接到我的域名帐户。 AWS SES将向我的S3存储桶发送消息。从那里,SNS将把原始格式的信息转发到我的gmail地址。 如何将原始邮件自动转换为标准电子邮件格式?

  • 问题内容: 我正在编写一个Python脚本来处理Procmail返回的电子邮件。如该问题中所建议,我正在使用以下Procmail配置: 我的process_mail.py脚本正在通过stdin接收电子邮件,如下所示: 我正在尝试以这种方式解析消息: 我想获取诸如“发件人”,“收件人”和“主题”之类的消息字段。但是,消息对象不包含任何这些字段。 我究竟做错了什么? 问题答案: 您必须确保这些行不会意

  • 问题内容: 我目前正在使用从服务器获取电子邮件并处理内容和附件的方法。 我想以状态/错误消息回复这些消息,并链接到我的网站上生成的结果内容(如果可以处理)。这应包括原始消息,但应删除所有附件(附件很大),最好仅用其文件名/大小替换它们。 由于我已经遍历了MIME消息部分,因此我假设需要做的是构建一个包含原始消息副本的新MIME消息树,并删除/替换附件节点。 在我走这条路之前,我希望有人能给我一些提

  • 我有Microsoft Exchange: 有办法做到这一点吗?要通读原始电子邮件信息,查看回复者是谁并转发到该电子邮件地址? 如果我们不能将其作为宏来完成,那么我们是否可以将发送到:mail@domain.com的所有邮件转发到脚本中,并让脚本处理解析呢?

  • 问题内容: 是否有人熟悉Java库,该库有助于解析以下电子邮件的字段(日期,主题,从,到)? 问题答案: JavaMail是一个Oracle库,它在javax.mail软件包中提供邮件服务和与邮件相关的服务(例如解析常规邮件和MIME邮件)。另外,Apache有一个用于处理邮件的Commons Email 库。 在JavaMail API中,解析包含电子邮件消息的字符串(可能是或可能不是明确的MI