2009-11-04 18 views
1

如何使用poplib,並從郵件模塊在Python中從email.Message類的郵件實例下載郵件?電子郵件作爲email.Message類對象在Python

我正在編寫一個程序,它分析所有電子郵件的特定信息,將部分消息存儲到數據庫中。我可以將整個郵件作爲文本下載,但通過附件查找文本的步驟很困難。

想法是解析消息信息

+0

您是否還需要解析附件(至少是文本類型的)以尋找「特定信息」? – mjv 2009-11-04 16:35:38

+0

是的!這是一個目標。但不管怎樣,我都需要一種掃描主要內容的方式! – ramdaz 2009-11-04 18:24:28

回答

3

使用FeedParseremail.feedparser模塊來構造從服務器poplib讀取消息的email.Message對象。

明確:

import poplib 
import email 

pop = poplib.POP3("server...") 
[establish connection, authenticate, ...] 
raw = pop.retr(1) 
pop.close() 

parser = email.parser.FeedParser() 
for line in raw[1]: 
    parser.feed(str(line+b'\n', 'us-ascii')) 
message = parser.close() 
+1

您可以使用BytesFeedParser爲您節省轉換爲str的麻煩(它也使用surrogateescape模式,以避免無效字符中斷) – 2016-06-12 09:26:02

2

不處理像阿德里安Plisson的回答字符集問題。

import poplib 
import email 

pop = poplib.POP3("server...") 
[establish connection, authenticate, ...] 
raw = pop.retr(1) 
pop.close() 

message = email.message_from_string('\n'.join(raw[1]))