如何使用python从linux的.msg文件中读取和提取数据?

问题描述 投票:1回答:1

我正在尝试使用以下代码从.msg文件中提取附件,如建议的here。以下只是测试附件是否被读取的部分代码

import email

with open('input/message.msg', 'rb') as fp:
    msg = email.message_from_binary_file(fp)

for part in msg.walk():
    print(part.get_content_type())
    print(part.get_filename())
    print(part.get_content_maintype())

[我希望其中某些print语句将输出类似于image/png的内容,但是即使该电子邮件具有大量附件,其输出也很简单

text/plain
None
text

您对我做错了什么吗?我正在使用python 3.7.3的Linux机器上工作。

谢谢

编辑

我没有进行过多研究,但最终使用了Python module msg-extractor,使用下面的代码,它可以毫无问题地工作

import extract_msg
msg = extract_msg.Message("input/email.msg")
for msg in msg.attachments:
    print(msg.save())

带有所有可用方法的附件类是工具here,我只需要存储附件。我将继续讨论这个问题,以期找到更相关的答案。

python email-attachments email-integration
1个回答
0
投票

您有机会尝试从一家独立的软件公司尝试MSG PY模块。这是一个例子:

from independentsoft.msg import Message

appointment = Message("e:\\appointment.msg")

print("subject: " + str(appointment.subject))
print("start_time: " + str(appointment.appointment_start_time))
print("end_time: " + str(appointment.appointment_end_time))
print("location: " + str(appointment.location))
print("is_reminder_set: " + str(appointment.is_reminder_set))
print("sender_name: " + str(appointment.sender_name))
print("sender_email_address: " + str(appointment.sender_email_address))
print("display_to: " + str(appointment.display_to))
print("display_cc: " + str(appointment.display_cc))
print("body: " + str(appointment.body))
© www.soinside.com 2019 - 2024. All rights reserved.