如何使用poplib,並從郵件模塊在Python中從email.Message類的郵件實例下載郵件?電子郵件作爲email.Message類對象在Python
我正在編寫一個程序,它分析所有電子郵件的特定信息,將部分消息存儲到數據庫中。我可以將整個郵件作爲文本下載,但通過附件查找文本的步驟很困難。
想法是解析消息信息
如何使用poplib,並從郵件模塊在Python中從email.Message類的郵件實例下載郵件?電子郵件作爲email.Message類對象在Python
我正在編寫一個程序,它分析所有電子郵件的特定信息,將部分消息存儲到數據庫中。我可以將整個郵件作爲文本下載,但通過附件查找文本的步驟很困難。
想法是解析消息信息
使用FeedParser
類email.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()
您可以使用BytesFeedParser爲您節省轉換爲str的麻煩(它也使用surrogateescape模式,以避免無效字符中斷) – 2016-06-12 09:26:02
不處理像阿德里安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]))
您是否還需要解析附件(至少是文本類型的)以尋找「特定信息」? – mjv 2009-11-04 16:35:38
是的!這是一個目標。但不管怎樣,我都需要一種掃描主要內容的方式! – ramdaz 2009-11-04 18:24:28