Python从电子邮件中提取特定附件

我正在努力实现以下目标:


我有一个电子邮件对象(eml),它可以包含多个附件,如zip /images/ txt等。我只想下载一个特定的附件,而不是从这个对象下载所有附件。


我尝试了以下代码:


import email

import mimetypes

import uuid

import os


m = email.message_from_file(open('hello.eml'))

for part in m.walk():

filename = part.get_filename()

print('fileName: ', filename)

if part.get_content_type() == 'multipart/mixed' and not filename:

    number_of_attachments = (len(part.get_payload()) - 1)

    print('number_of_attachments: ', number_of_attachments)

    for attachment in range(number_of_attachments):

        tmp_name = str(uuid.uuid4())

        fp = open('.' + tmp_name, 'wb')

        attachment += 1

        fp.write(part.get_payload()[attachment].get_payload(decode=True))

        fp.close()

这将提取所有附件。有没有办法只过滤特定的附件并处理它。


任何帮助都非常感谢!


人到中年有点甜
浏览 319回答 1
1回答

慕尼黑8549860

所以,我找到了以下方法。 import email import mimetypes import uuid import os m = email.message_from_file(open('hello.eml')) for part in m.walk(): filename = part.get_filename() print('fileName: ', filename) if part.get_content_type() == 'multipart/mixed' and not filename:   number_of_attachments = (len(part.get_payload()) - 1)   print('number_of_attachments: ', number_of_attachments)   for attachment in range(number_of_attachments):       filteredFile = m.get_payload()[attachment]       if filteredFile.get_content_type() == 'text/html':            print("Search successful.")       else:            print("Search unsuccessful.")
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python