1

How to get a list of files from the archive (rar or zip) attached to the E-mail using Python? That is, I have a EML file. I do not need to unzip the files just to get a list. Theoretically possible option when attached very large file and process the extracted attachments can take a lot of time and resources.

4

2 回答 2

1

这是使用 stdlib 执行此操作的方法,获取存储为的简单多部分消息中的第一个附件message.eml

import email.parser
import StringIO
import zipfile

with open('message.eml') as f:
    msg = email.parser.Parser().parse(f)
attachment = msg.get_payload(1)
zipf = StringIO.StringIO(attachment.get_payload())
zip = zipfile.ZipFile(zipf)
filenames = zip.namelist()

这将解析整个 MIME 信封,解码整个附件,并读取该附件的 ZIP 目录……但至少它不会解压缩 ZIP 存档中的任何文件,所以我怀疑你实际上不会有任何性能需要担心的问题。

于 2013-06-28T00:02:34.693 回答
0

这个答案告诉您如何获取文件对象(对于 zip 存档,使用ZipFile 构造函数打开文件,而不是普通的 open() 函数)。然后您可以使用zipfile.namelist()来获取存档成员的名称

于 2013-06-28T00:01:41.807 回答