我有一個電子郵件多部分郵件對象,我想將該電子郵件中的附件轉換爲python文件對象。這可能嗎?如果可能的話,我應該研究Python中的哪些方法或類來完成這樣的任務?獲取郵件附件到python文件對象
回答
我真的不明白「email multipart message object」的含義。你的意思是屬於email.message.Message
類的對象嗎?
如果這就是你的意思,那很簡單。在多部分消息中,get_payload
方法返回消息部分的列表(每個消息部分本身都是一個Message
對象)。您可以遍歷這些部分並檢查它們的屬性:例如,get_content_type
方法返回該部分的MIME類型,get_filename
方法返回該部分的文件名(如果在消息中指定了該文件)。然後,當您找到正確的信息部分時,您可以撥打get_payload(decode=True)
獲取解碼的內容。
>>> import email
>>> msg = email.message_from_file(open('message.txt'))
>>> len(msg.get_payload())
2
>>> attachment = msg.get_payload()[1]
>>> attachment.get_content_type()
'image/png'
>>> open('attachment.png', 'wb').write(attachment.get_payload(decode=True))
如果你編程方式提取您收到電子郵件中的附件,你可能要採取防範病毒和木馬的防範措施。特別是,你可能只應該提取你知道的MIME類型安全的附件,並且你可能想要選擇你自己的文件名,或者至少清除get_filename
的輸出。
這很好。謝謝。 – 2010-11-06 20:53:58
HTML郵件通常在頁腳中有圖像,這些圖像也作爲附件發送。您可以通過查看Content-Disposition來區分這些內容與「真實」附件:內嵌圖像以「inline」開頭,而實際附件以「attachment」開頭。沒有獲取內容處置的方法,但如果您只對實際附件感興趣,則可以調用part.get('Content-Disposition')。startswith('attachment')。 – jrial 2017-06-25 15:21:45
這裏是工作的解決方案,消息形式IMAP服務器
self.imap.select()
typ, data = self.imap.uid('SEARCH', 'ALL')
msgs = data[0].split()
print "Found {0} msgs".format(len(msgs))
for uid in msgs:
typ, s = self.imap.uid('FETCH', uid, '(RFC822)')
mail = email.message_from_string(s[0][1])
print "From: {0}, Subject: {1}, Date: {2}\n".format(mail["From"], mail["Subject"], mail["Date"])
if mail.is_multipart():
print 'multipart'
for part in mail.walk():
ctype = part.get_content_type()
if ctype in ['image/jpeg', 'image/png']:
open(part.get_filename(), 'wb').write(part.get_payload(decode=True))
- 1. 附加文件像對象到電子郵件python 3
- 2. 從Python中的電子郵件附件獲取文件名
- 3. 從電子郵件附件獲取XML文件到變量
- 4. 從電子郵件中提取附件 - 無法獲取附件的文件名
- 5. 從電子郵件附件獲取文本並寫入文件
- 6. 從Swift_Message對象獲取附件列表
- 7. 如何使用python電子郵件獲取解碼附件文件名?
- 8. 郵件附件pdf文件
- 9. LotusScript無法從電子郵件中獲取文件附件
- 10. 在郵件附件中獲取空文件
- 11. 獲取電子郵件附件的文件上傳umbraco
- 12. C#從郵件附件獲取文件名
- 13. PHP郵件PDF附件獲取文件損壞
- 14. 從文件讀取對象樹到Python
- 15. python poplib獲取附件
- 16. 提取附件管道郵件到PHP
- 17. 使用Android獲取郵件和Gmail郵件的多個附件
- 18. 獲取對象文件
- 19. c#電子郵件對象流到附件
- 20. 將Spring Multipart對象附加到Java郵件對象
- 21. 安卓:附加文件到郵件
- 22. Magento附加文件到發貨郵件?
- 23. 將PDF文件附加到郵件中
- 24. 將文件附加到電子郵件
- 25. 使用php附加文件到郵件
- 26. 將文件附加到郵件
- 27. 附加文本文件到電子郵件意圖對象的問題
- 28. 將對象附加到.txt文件
- 29. 如何從SAP HCI收到的郵件中獲取附件
- 30. 如何將pdf文件附加到Python中的MIME郵件?
你至今讀哪一部分Python庫嗎?你有沒有看過pop或imap庫? – 2010-11-01 10:12:44
我只看着email.message.Message和mimetools.Message。好吧,我會讀入pop和imail,看看我能用它做什麼。 – 2010-11-01 10:18:18