从存储在驱动器上的.MSG文件的附件中提取文本

时间:2019-06-19 04:28:36

标签: python python-3.x msg eml

我已经在python3中使用过mailparser模块来提取.EML文件中的附件(如下所示)

import mailparser
mail = mailparser.parse_from_file(filepath)
msg_body = mail.body.split('--- mail_boundary ---', 1)[0]
msg_subject = mail.subject
msg_attachments = mail.attachments
print(msg_subject)

我无法将上述代码用于.MSG文件。这是行不通的。有更好的方法吗? 我尝试过extract_msg,email_parser,但没有运气。

2 个答案:

答案 0 :(得分:0)

如果您使用的mail-parser软件包列出了一个pypi,则根据其documentation,您必须安装libemail-outlook-message-perl软件包以及mail-parser软件包。

在Debian上:

apt-get install libemail-outlook-message-perl

有关详细信息,您可以做(假设您有一个debian操作系统):

apt-cache show libemail-outlook-message-perl

您可以找到其他软件包here的下载内容。

This是他们的github存储库。

如果您有Windows,那么一种快速的解决方案是使用this之类的网站将.msg文件转换为.eml文件。另一个将是从其github存储库中手动构建该软件包。

答案 1 :(得分:0)

是的,有一种方法可以做到。 在我的工作中,我测试了MSG PY模块。 这是用于Python的Microsoft Outlook .msg文件模块。 该模块使您可以轻松创建/读取/解析/转换Outlook .msg文件。 该模块不需要在计算机或任何其他第三方应用程序或库上安装Microsoft Outlook即可正常工作。 例如:

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))
相关问题