У меня есть файл eml с некоторыми вложениями. Я хочу прочитать текстовое содержимое в файле eml и извлечь информацию метаданных, например (отправитель, cc, b cc, тема). Также я хочу скачать вложения. С помощью приведенного ниже кода я могу только извлечь информацию / текстовое содержание в теле письма.
import email
from email import policy
from email.parser import BytesParser
import glob
file_list = glob.glob('*.eml') # returns list of files
with open(file_list[2], 'rb') as fp: # select a specific email file from the list
msg = BytesParser(policy=policy.default).parse(fp)
text = msg.get_body(preferencelist=('plain')).get_content()
print(text)
Было имя модуля emaildata, которое было доступно для Python 2.
Извлечение информации метаданных
import email
from emaildata.metadata import MetaData
message = email.message_from_file(open('message.eml'))
extractor = MetaData(message)
data = extractor.to_dict()
print data.keys()
Извлечение информации о вложениях
import email
from emaildata.attachment import Attachment
message = email.message_from_file(open('message.eml'))
for content, filename, mimetype, message in Attachment.extract(message):
print filename
with open(filename, 'w') as stream:
stream.write(content)
# If message is not None then it is an instance of email.message.Message
if message:
print "The file {0} is a message with attachments.".format(filename)
Но эта библиотека устарела и сейчас использовать. Есть ли какая-либо другая библиотека, которая могла бы извлечь метаданные и информацию, связанную с вложениями?