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文件夹所在的路径,然后执行如下代码
pythoneml.py
4、执行上述命令后,会在指定的eml文件夹下产生这个文件夹
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: yjxmw518
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。