簡體   English   中英

無法在Python中解析電子郵件

[英]Unable to Parse Email in Python

我已經在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

我沒有在“收件人”,“從”和“主題”字段中獲得實際值。

有什么想法為什么不打印實際值?

我的示例.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:

在此處輸入圖片說明

謝謝

這是您在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 '

這樣就行了。

我預見的下一個問題是,主題標題的格式似乎在消息中不一致。 例如,在您問題的消息中,主題標頭為“ orderid:ord1234,circtid:cr1234”,但在此消息中,其標題為“ Cct ID:ONE211,eCo訂單號:1CTRP”。 您希望能夠從消息中恢復“訂單ID,電路ID”,但這些項目不會出現在每條消息中。

如果他們這樣做了,您可能會用正則表達式將它們搜索出來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM