python - 使用 Python 解析电子邮件

标签 python email parsing mime

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

:0:
|$HOME/process_mail.py

我的 process_mail.py 脚本正在通过标准输入接收一封电子邮件,如下所示:

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

关于python - 使用 Python 解析电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3050298/

相关文章:

python - SQLAlchemy - 一次搜索三个表

javascript - 如何从浏览器中的文本中删除可见的HTML语法?

python - 将绘图工具提示文本颜色设置为与热图的悬停像素相同

python - 如何在 Flask 中创建忽略静态文件的包罗万象的 URL 路由?

python - 我应该为方法 `self` 参数使用什么类型?

python - 使用 csv 文件在 python 中检索和检查密码

php - 如何禁用在浏览器上显示配置详细信息的 phpmailer

php - 如何在 Laravel 5.4 中配置 .env 文件避免垃圾邮件

php - 将标记解析为元素树

powershell - 匹配后解析行 "something"Powershell