我有一组存储在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:
由于
答案 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;来自消息,但这些项目不会出现在每条消息中。
如果他们这样做了,你可能会用正则表达式将它们揪出来。