2012-02-11 11 views
0

我正在使用imaplib模塊登錄到我的gmail帳戶並檢索電子郵件。 這給了我很多信息以及to/from/subject/body文本。根據 類型(msg)返回的對象是一個實例。將正則表達式應用於實例 - 來自電子郵件

當我將它應用到msg對象時,我的正則表達式不會工作,因爲它需要一個字符串,而這顯然是一個實例,所以不起作用。正則表達式的

實例,以確定其正常工作的日期時,我只是給它一個字符串:

match = re.search(r"Time:\s(([0-2]\d):([0-5]\d))", text) # validates hour and minute in a 24 hour clock 

所以三個問題真的:
1)我要對這個正確的方式還是有一個更好的方法來做到這一點?
2.)我怎樣才能申請我的正則表達式到這個'實例'的通知,所以我可以確定日期/時間等
3)我怎麼才能檢索電子郵件正文?

result, data = mail.fetch(latest_email_id, "(RFC822)") 

raw_email = data[0][1] 

email_message = email.message_from_string(raw_email) 

msg = email.message_from_string(raw_email) 
msg.get_payload() 

再次感謝您

+0

實例? – 2012-02-11 16:35:03

+0

我還沒有使用imaplib在一點,但味精實例可以轉換爲一個字符串與str(味精)或它有屬性返回msg – jdi 2012-02-11 16:36:58

+0

我是新來的python,但當我輸入(味精)它返回?這不是一種類型? – dannymilsom 2012-02-11 16:39:46

回答

0

我認爲這個問題可能是非常接近的另一個問題我已經回答: payload of an email in string format, python

爲其他人的主要問題是,get_payload()可以返回多部分對象,你必須檢查。它並不總是一個字符串。

下面是關於如何處理你get_payload得到()對象的其他問題的片段:

if isinstance(payload, list): 
    for m in payload: 
     print str(m).split() 

else: 
    print str(m).split() 

此外,您還可以查看實際延伸談話,我曾與這個問題的OP這裏:http://chat.stackoverflow.com/rooms/5963/discussion-between-jdi-and-puneet

+0

我認爲你可能是對的,但我並不真正瞭解如何解決問題。那麼如果msg是多部分對象,我怎麼才能訪問body/from/subject等? – dannymilsom 2012-02-11 16:54:34

0

原來,電子郵件的主體可以通過有效載荷[0]訪問,因爲有效載荷是一個列表,而味精變量是一個實例。然後我只是把它用一個簡單的

payload = msg.get_payload() 
body = payload[0] 
str_body = str(body) 

感謝您的幫助轉換爲字符串再次什麼類型的