无法解析Python中的电子邮件

时间:2018-01-03 18:27:54

标签: python-3.x email parsing

我有一组存储在E:/驱动器中的.msg文件,我必须阅读它并从中提取一些信息。 为此我在Python 3.6中使用以下代码。

from email.parser import Parser
with open("E:\Downloads\Test1.msg",encoding="ISO-8859-1") as fp:
    headers = Parser().parse(fp)

print('To: %s' % headers['To'])
print('From: %s' % headers['From'])
print('Subject: %s' % headers['subject'])

在输出中我得到如下。

To: None
From: None
Subject: None

处理完成,退出代码为0

我没有在To,FROM和subject字段中获得实际值。

有没有想过为什么不打印实际值?

我的示例.msg文件如下所示。

From: Bournemouth.wmt@gmail.com
To: Francis.dell@gmail.com
Subject: orderid: ord1234, circtid: cr1234


Charges:
Annual Charge - 10
Excess Charges - 5

从这条消息我试图从主题中提取订单ID,电路ID并从邮件正文中收费。

输出1:

enter image description here

由于

1 个答案:

答案 0 :(得分:0)

这是您在我们的pastebin上发布的文件正文。

From: ratankumar.shivratri@TechM.com <ratankumar.shivratri@TechM.com>
Sent: Thursday, January 4, 2018 11:58 AM
To: Ratankumar Shivratri
Subject: Cct Id: ONE211, eCo order No: 1CTRP

Charges:

Annual rental - 2,125.00

Maintenance charge - 0.00



Regards

Ratan.

我已经能够使用以下代码从标题中获取数据。

>>> from email.parser import Parser
>>> p = Parser()
>>> msg = p.parse(open('ratan.msg'))
>>> msg['To']
'Ratankumar Shivratri'
>>> msg['From']
'ratankumar.shivratri@TechM.com <ratankumar.shivratri@TechM.com>'
>>> msg['Subject']
'Cct Id: ONE211, eCo order No: 1CTRP\n '

这样有用。

我预见的下一个问题是主题标题的格式似乎在消息之间不一致。例如,在您问题的邮件中,主题标题为&quot; orderid:ord1234,circtid:cr1234&#39;但是在这条消息中,它的Cct Id:ONE211,eCo订单号:1CTRP&#39;。您希望能够恢复订单ID,电路ID&#39;来自消息,但这些项目不会出现在每条消息中。

如果他们这样做了,你可能会用正则表达式将它们揪出来。