为了账号安全,请及时绑定邮箱和手机立即绑定

Python从电子邮件中提取特定附件

Python从电子邮件中提取特定附件

人到中年有点甜 2022-09-06 16:22:53
我正在努力实现以下目标:我有一个电子邮件对象(eml),它可以包含多个附件,如zip /images/ txt等。我只想下载一个特定的附件,而不是从这个对象下载所有附件。我尝试了以下代码:import emailimport mimetypesimport uuidimport osm = email.message_from_file(open('hello.eml'))for part in m.walk():filename = part.get_filename()print('fileName: ', filename)if part.get_content_type() == 'multipart/mixed' and not filename:    number_of_attachments = (len(part.get_payload()) - 1)    print('number_of_attachments: ', number_of_attachments)    for attachment in range(number_of_attachments):        tmp_name = str(uuid.uuid4())        fp = open('.' + tmp_name, 'wb')        attachment += 1        fp.write(part.get_payload()[attachment].get_payload(decode=True))        fp.close()这将提取所有附件。有没有办法只过滤特定的附件并处理它。任何帮助都非常感谢!
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

所以,我找到了以下方法。


 import email

 import mimetypes

 import uuid

 import os


 m = email.message_from_file(open('hello.eml'))

 for part in m.walk():

 filename = part.get_filename()

 print('fileName: ', filename)

 if part.get_content_type() == 'multipart/mixed' and not filename:

   number_of_attachments = (len(part.get_payload()) - 1)

   print('number_of_attachments: ', number_of_attachments)

   for attachment in range(number_of_attachments):

       filteredFile = m.get_payload()[attachment]

       if filteredFile.get_content_type() == 'text/html':

            print("Search successful.")

       else:

            print("Search unsuccessful.")


查看完整回答
反对 回复 2022-09-06
  • 1 回答
  • 0 关注
  • 318 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号