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

使用Python解析电子邮件

胡彭亮
2023-03-14
问题内容

我正在编写一个Python脚本来处理Procmail返回的电子邮件。如该问题中所建议,我正在使用以下Procmail配置:

:0:
|$HOME/process_mail.py

我的process_mail.py脚本正在通过stdin接收电子邮件,如下所示:

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

我正在尝试以这种方式解析消息:

>>> import email
>>> msg = email.message_from_string(full_message)

我想获取诸如“发件人”,“收件人”和“主题”之类的消息字段。但是,消息对象不包含任何这些字段。

我究竟做错了什么?


问题答案:

您必须确保这些行不会意外断开(如上所示,尽管很难说这是否是复制粘贴问题)-带有完整的消息,例如:

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(msgtxt)
print msg['Subject']

TEST 12根据需要打印。



 类似资料:
  • 我已经尝试了整整一周使用antlr构建一个语法,允许我解析电子邮件消息。 我的目标不是将整个电子邮件彻底解析为令牌,而是将其分解为相关部分。 这是我必须处理的文档格式。描述不属于消息一部分的内联注释: 我面临的问题如下: 我没有想出一个好方法来跳过消息开头的文本,并在找到标记后才开始应用解析规则。截面类型1 捕获节开始和句子标记之间节内的所有文本 在SECTION\u结束标记之后,忽略后面的所有文

  • Im正在尝试分析outlook中的.msg文件以获取MIME内容,以便将该文件另存为EML。我正在使用Exchange Web服务在EML通过Exchange服务器上的日志收件箱时保存EML,但有些电子邮件需要在事后通过outlook add in保存,不过将它们变成EML/MIME格式似乎比较困难。 任何洞察力都是非常有用的。

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

  • 我目前正在做一个项目,我已经选择使用Gmail发送和接收电子邮件。我希望能够发送电子邮件,有一个用户回复它,并解析他们的响应。响应可以是任意行数(因此类似的内容将不起作用)。然后它应该能够直接回复该电子邮件线程。 一旦我得到响应,我想要解析它,并根据消息的内容用一个适当的响应来回复。我更愿意直接回复线程,而不是启动一个新的线程。不幸的是,谷歌文档中的所有内容都是: 如果您试图发送回复并希望将电子邮

  • 问题内容: 我有兴趣在收到来自具有特定主题的特定地址的电子邮件时触发某些操作。为了能够做到这一点,我需要对邮箱进行监视,检查每个传入的邮件(特别是我使用gmail)。最简单的方法是什么? 问题答案: Gmail提供了通过POP进行连接的功能,您可以在gmail设置面板中将其打开。Python可以使通过POP的连接非常容易: 您只需要将此脚本作为cron作业运行即可。不确定您使用的平台如何,YMMV

  • 问题内容: 我必须要做一个Windows应用程序,该应用程序会不时访问Gmail帐户并检查是否有新电子邮件。如果有的话,它必须阅读电子邮件的正文和主题(简单的文本电子邮件,没有图像或附件)。 请不要使用付费库,如果使用了其他库,请提供下载路径。 而且我只需要电子邮件正文和主题。因此,如果可以解析来自Gmail的冗长而复杂的邮件,并且仅包含主题和正文的两个字符串,那将是完美的选择。 最后,我只需要使