使用Python 2.7解析msg/eml文件

4

有没有可以解析msg或eml文件的库?我写了一个脚本,可以在将电子邮件转换为txt文件后解析它,但我找不到一种电子邮件客户端,可以让我轻松地将电子邮件从GUI拖放到文件夹中作为txt文件(如果有人知道这个,请告诉我!)

从Outlook拖放创建.msg文件,Thunderbird创建.eml文件。有人知道一个能像这样解析这些文件的库吗?


1
看起来你可以在Python中打开.eml文件,只需要格式化头部即可。 - D3l_Gato
3个回答

8
对于 *.eml 文件,您可以使用标准库中的邮件模块(email module)。您需要使用 email.parser 中的解析器(Parser)来创建消息对象。

2
`from mailparser import MailParser

parser = MailParser()
parser.parse_from_file(f)
parser.parse_from_string(raw_mail)
parser.body
parser.headers
parser.message_id
parser.to_
parser.from_
parser.subject
parser.text_plain_list: only text plain mail parts in a list
parser.attachments_list: list of all attachments
parser.date_mail
parser.parsed_mail_obj: tokenized mail in a object
parser.parsed_mail_json: tokenized mail in a JSON
parser.defects: defect RFC not compliance
parser.defects_category: only defects categories
parser.has_defects
parser.anomalies
parser.has_anomalies
parser.get_server_ipaddress(trust="my_server_mail_trust")`

0

有,我在工作中测试了独立软件公司的 MSG PY 模块。 这是用于 Python 的 Microsoft Outlook .msg 文件模块:

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))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接