def parse_attachment(message_part): '''Parse an email message part into an attachment object.''' 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"): file_data = message_part.get_payload(decode=True) attachment = StringIO(file_data) attachment.content_type = message_part.get_content_type() attachment.size = len(file_data) attachment.name = message_part.get_filename() attachment.create_date = None attachment.mod_date = None attachment.read_date = None for param in dispositions[1:]: name,value = param.split("=") name = name.lower() if name == "filename": attachment.name = value elif name == "create-date": attachment.create_date = value attachment.ctime = parse_time(value) elif name == "modification-date": attachment.mod_date = value attachment.mtime = parse_time(value) elif name == "read-date": attachment.read_date = value attachment.atime = parse_time(value) return attachment return None