def _parse_attachment(message_part): content_disposition = message_part.get("Content-Disposition", None) if content_disposition: dispositions = content_disposition.strip().split(";") if content_disposition and dispositions[0].lower() == "attachment": file_data = message_part.get_payload(decode=True) attachment = BytesIO(file_data) attachment.content_type = message_part.get_content_type() attachment.size = len(file_data) attachment.name = None attachment.create_date = None attachment.mod_date = None attachment.read_date = None for param in dispositions[1:]: name, value = param.strip().split("=") name = name.lower() if name == "filename": attachment.name = value elif name == "create-date": attachment.create_date = value # FIXME: datetime elif name == "modification-date": attachment.mod_date = value # FIXME: datetime elif name == "read-date": attachment.read_date = value # FIXME: datetime attachment.checksum = _md5(attachment) return attachment return None