从python的EMAIL中提取本身为MSG类型的附件

时间:2019-03-13 17:20:13

标签: python email-parsing

我需要从电子邮件中提取一个msg类型的附件,并将MSG附件保存到python中的某个位置。

我编写的脚本可用于除Outlook项目以外的几乎所有类型的文件

def parse_attachment(message_part):
    content_disposition = message_part.get("Content-Disposition", None)
    if content_disposition:
        dispositions = content_disposition.strip().split(";")
        if bool(content_disposition and (dispositions[0].lower() == "attachment" or dispositions[0].lower() == "inline")):

            file_data = message_part.get_payload(decode=True)
            debug(message_part)
            attachment = {}
            attachment['data'] = file_data
            attachment['content_type'] = message_part.get_content_type()
            attachment['size'] = len(file_data)

            for param in dispositions[1:]:
                name,value = param.split("=")
                name = name.lower().strip()
                value = value.strip().strip("\"")

                if name == "filename":
                    attachment['name'] = value
                elif name == "creation-date":
                    attachment['creation-date'] = value
                elif name == "modification-date":
                    attachment['modification-date'] = value
                elif name == "size":
                    attachment['size'] = value
            return attachment

    return None

1 个答案:

答案 0 :(得分:0)

我们必须分别处理电子邮件附件。但是,如果我们使用counter += 5 if statement else 0 ,它是一种通用生成器,可用于在 depth-first中迭代消息对象树的所有部分和子部分遍历顺序,我们最终还会解析附件电子邮件。

因此,我们将不得不使用walk()来获取电子邮件的各个部分。这是我们解析电子邮件附件的方法-

get_payload()