我有一个电子邮件多部分邮件对象,我想将该电子邮件中的附件转换为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. 从电子邮件附件获取XML文件到变量
- 2. LotusScript无法从电子邮件中获取文件附件
- 3. 在邮件附件中获取空文件
- 4. C#从邮件附件获取文件名
- 5. 从文件读取对象树到Python
- 6. c#电子邮件对象流到附件
- 7. 将Spring Multipart对象附加到Java邮件对象
- 8. 使用php附加文件到邮件
- 9. 安卓:附加文件到邮件
- 10. 将文件附加到邮件
- 11. 将文件附加到电子邮件
- 12. 将PDF文件附加到邮件中
- 13. 如何从SAP HCI收到的邮件中获取附件
- 14. 压缩文件列表并附加到电子邮件 - python
- 15. 如何将pdf文件附加到Python中的MIME邮件?
- 16. 邮件附件
- 17. Python - 从Flask的文件上传中获取文件对象的文件大小
- 18. 如何获取电子邮件中附加的.csv文件文件
- 19. 在python中将文件附加到电子邮件导致空白文件名?
- 20. 不附加邮件附件
- 21. 脚本在python,下载邮件附件
- 22. mailgun传入邮件事件获取附件的URL
- 23. 文件名为空的邮件附件
- 24. autostorage电子邮件附件文件
- 25. PHP:邮件附件文件大小
- 26. 带邮件的多个文件附件()
- 27. 从smtplib附件文件 - python
- 28. 将XHTML文件中的PDF文件附加到电子邮件
- 29. 将.msg附件的内容附加到邮件正文
- 30. Javamail,获取邮件正文
你至今读哪一部分Python库吗?你有没有看过pop或imap库? – 2010-11-01 10:12:44
我只看着email.message.Message和mimetools.Message。好吧,我会读入pop和imail,看看我能用它做什么。 – 2010-11-01 10:18:18