我已经在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,但没有运气。
答案 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))