python提取eml文件中的附件

python提取eml文件中的附件1 首先搭建好 python 的开发环境 推荐是 visual studio code 开发环境 2 通过 email 库提取出邮件 eml 文件中的附件文件 其中指定的 eml 文件夹中的文件列表如下图具体代码如下 可根据自己的需要换成自己的 eml 文件夹 fro

大家好,欢迎来到IT知识分享网。

1、首先搭建好python的开发环境,

推荐是visual studio code开发环境

2、通过email库提取出邮件eml文件中的附件文件,其中指定的eml文件夹中的文件列表如下图

python提取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文件夹下产生<保存的附件>这个文件夹

python提取eml文件中的附件

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

(0)
上一篇 2025-02-10 11:00
下一篇 2025-02-10 11:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信