2010-12-20 78 views
0

我相對比較新的編程和python,但我認爲我做得很好。這是我的代碼,並且它工作正常,除了它以MIME格式獲取整個消息。我只想要未讀電子郵件的文本正文,但我無法弄清楚如何去除所有格式和標題信息。如果我使用一個smtp python腳本發送一個基本電子郵件,我使它工作正常,並且只打印正文,但是如果我使用outlook發送電子郵件,它會打印一堆額外的垃圾。很感謝任何形式的幫助。如何僅使用IMAP提取Python的電子郵件正文?

client = imaplib.IMAP4_SSL(PopServer) 

client.login(USER, PASSWORD) 
client.select('INBOX') 
status, email_ids = client.search(None, '(UNSEEN SUBJECT "%s")' % PrintSubject) 
print email_ids 
client.store(email_ids[0].replace(' ',','),'+FLAGS','\Seen') 
for email in get_emails(email_ids): 

get_emails()

def get_emails(email_ids): 
     data = [] 
     for e_id in email_ids[0].split(): 
      _, response = client.fetch(e_id, '(UID BODY[TEXT])') 
      data.append(response[0][1]) 
     return data 
+0

如果我回想起來,outlook程序遵循自己的電子郵件標準(包括一些「額外的垃圾」)。試着用谷歌搜索它的定義。 – martineau 2010-12-20 20:38:56

回答

1

聽起來你正在尋找的email包:

電子郵件包提供了一個標準的解析器,瞭解大多數電子郵件文檔結構,包括MIME文件。您可以將解析器傳遞給字符串或文件對象,並且解析器將返回對象結構的根消息實例。對於簡單的非MIME消息,這個根對象的負載可能是一個包含消息文本的字符串。對於MIME消息,根對象將從其is_multipart()方法返回True,並且可以通過get_payload()和walk()方法訪問子部分。
相關問題