大家好,欢迎来到IT知识分享网。
1、首先搭建好python的开发环境,
推荐是visual studio code开发环境
2、通过email库提取出邮件eml文件中的附件文件,其中指定的eml文件夹中的文件列表如下图

具体代码如下,可根据自己的需要换成自己的eml文件夹
from email import policy from email.header import decode_header from email.parser import BytesParser # 从eml文件中提取附件 def extract_attachments_from_eml(emlFileDir): saveDir = '保存的附件' # 需要保存的附件目录 saveDir = os.path.join(emlFileDir, saveDir) if not os.path.exists(saveDir): # 在打开的eml目录下新建saveDir os.mkdir(saveDir) # 遍历目录下的所有文件 for filename in os.listdir(emlFileDir): if filename.endswith('.eml'): # 只处理eml文件 file_path = os.path.join(emlFileDir, filename) # 得到eml文件路径 with open(file_path, 'rb') as fp: # 使用BytesParser打开并解析EML文件 msg = BytesParser(policy=policy.default).parse(fp) # 遍历eml邮件中的所有部分 for part in msg.walk(): # 检查是否有附件,有content-disposition且不为inline if part.get_content_disposition() and part.get_content_disposition().startswith('attachment'): filename = part.get_filename() # 解码文件名,以防止他是非ascii字符 # filename = email.header.make_header(email.header.decode_header(filename)) filename = part.get_filename() filepath = os.path.join(saveDir, filename) # 构建完整的保存路径 # 保存附件到本地 if not os.path.isfile(filepath): with open(filepath, 'wb') as f: f.write(part.get_payload(decode=True)) print(f"从eml文件中提取的附件 {filename} 已保存到 {filepath}") else: print(f"从eml文件中提取的附件 {filename} 已存在于 {filepath}") if __name__ == '__main__': extract_attachments_from_eml('./eml附件')
3、在main函数中指定需要提取的eml文件所在的路径,然后执行如下代码
python eml.py
4、执行上述命令后,会在指定的eml文件夹下产生<保存的附件>这个文件夹

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/169816.html