我不太明白你的意思是“电子邮件多部分消息对象”.你的意思是属于
email.message.Message类的对象?
如果这是你的意思,这很简单.在多部分消息中,get_payload方法返回消息部分的列表(每个消息本身都是一个Message对象).您可以遍历这些部分并检查其属性:例如,get_content_type方法返回部分的MIME类型,get_filename方法返回部分的文件名(如果在消息中指定了该文件).然后当您找到正确的消息部分时,可以调用get_payload(decode = True)获取解码的内容.
>>> import email
>>> msg = email.message_from_file(open('message.txt'))
>>> len(msg.get_payload())
2
>>> attachment = msg.get_payload()[1]
>>> attachment.get_content_type()
'image/png'
>>> open('attachment.png', 'wb').write(attachment.get_payload(decode=True))
如果您以编程方式从您收到的电子邮件中提取附件,则可能需要对病毒和木马采取预防措施.特别是,您可能应该仅提取您知道的MIME类型的附件是安全的,您可能希望选择自己的文件名,或至少清理get_filename的输出.