

发布于 2025-09-28 09:26462浏览每天收到满是图片的邮件,想保存却只能右键“另存为”一张张点?其实不用这么麻烦!今天给大家整理了两种超实用的邮件图片提取方案:一种不用存eml文件,直接在邮箱里批量提;另一种用eml文件+Python脚本,适合大量邮件集中处理。不管你是用Outlook、网页邮箱还是手机,都能找到适合自己的方法~
适合场景:邮件数量少(10封以内)、常用固定邮箱工具(如Outlook客户端、QQ/网易网页版),不想折腾文件和脚本,追求“即开即提”。
下面分3种常用工具,讲具体操作步骤,全是傻瓜式操作,不用懂技术!
如果你用的是电脑端Outlook(比如公司办公常用的2019/365版本),直接用自带功能就能批量提图,不用装任何工具:
👉 优点:不用装插件,微软自带功能,安全无广告;
👉 缺点:一次只能处理1封邮件,适合单封多图的场景。
如果习惯用网页版邮箱(比如在家用QQ邮箱、网易邮箱),没有客户端的批量功能,可试试这两种方法:
找一个安全的“邮件图片提取”插件,比如Chrome/Edge浏览器的「Email Image Saver」:
👉 注意:只从浏览器官方扩展商店下载插件,避免装到恶意软件;部分邮箱可能屏蔽插件,若无效换方法B。
如果不想装插件,用浏览器自带的“开发者工具”也能提图,步骤稍多但通用:
👉 优点:不用装任何东西,所有浏览器都支持;
👉 缺点:一次只能提1封邮件,图片多的话要手动选,略费时间。
如果邮件在手机上,想直接提取图片,两种简单方法:
适合场景:邮件数量多(10封以上)、需要按邮件分类存图(比如每封邮件的图片单独放一个文件夹),想一次性搞定所有提取工作。
这种方法的核心是:先把所有邮件存成eml文件(所有邮箱都支持存),再用现成脚本批量提图,新手不用写代码,改个路径就行!
不管你用什么邮箱,存eml的方法都很统一,以常见工具为例:
| 邮箱工具 | 存为eml步骤 |
| Outlook客户端 | 选中邮件→右键「另存为」→保存类型选「Outlook邮件格式(.eml)」→选保存路径 |
| QQ/网易网页版 | 打开邮件→右上角「更多」/「更多操作」→「导出邮件」→自动下载eml文件 |
| 手机邮箱APP | 长按邮件→「更多」→「导出邮件」→通过微信/QQ发送到电脑,保存为eml文件 |
把所有要提图的eml文件,放到同一个文件夹里(比如桌面“邮件提图”文件夹),方便后续处理。
我已经把代码写好了,新手不用懂编程,只需改1个参数、运行1行命令:
如果没装Python,先装一下(后续处理其他文件也能用):
把下面的代码复制下来,用记事本保存为「extract_email_images.py」文件,然后放到刚才存eml文件的文件夹里(比如桌面“邮件提图”文件夹,现在文件夹里有:脚本文件+所有eml文件):
import os
from email import policy
from email.parser import BytesParser
# !!!重点:修改成你的eml文件所在文件夹路径
eml_dir = r"C:\Users\你的用户名\Desktop\邮件提图"
def extract_images_from_eml(eml_path, output_dir):
"""从单个eml文件提取图片并保存"""
try:
# 解析eml文件
with open(eml_path, 'rb') as f:
msg = BytesParser(policy=policy.default).parse(f)
count = 0
# 遍历邮件内容,筛选图片
for part in msg.walk():
content_type = part.get_content_type()
if content_type.startswith("image/"):
# 统一图片格式(jpeg→jpg)
ext = content_type.split("/")[-1]
if ext == "jpeg":
ext = "jpg"
# 处理图片文件名(避免特殊字符报错)
filename = part.get_filename() or f"image_{count}.{ext}"
filename = "".join([c for c in filename if c not in '/:*?"<>|'])
filepath = os.path.join(output_dir, filename)
# 保存图片
payload = part.get_payload(decode=True)
if payload:
with open(filepath, "wb") as img:
img.write(payload)
print(f"✅ 提取成功:{filepath}")
count += 1
# 无图片时创建标记文件
if count == 0:
with open(os.path.join(output_dir, "无图片说明.txt"), "w", encoding="utf-8") as f:
f.write("该邮件中未包含可提取的图片")
print("❌ 该邮件无图片")
return count
except Exception as e:
print(f"⚠️ 处理失败:{str(e)}")
return 0
def main():
"""批量处理所有eml文件"""
# 检查文件夹是否存在
if not os.path.exists(eml_dir):
print(f"❌ 错误:文件夹不存在 → {eml_dir}")
return
# 遍历所有eml文件
for file in os.listdir(eml_dir):
if file.lower().endswith(".eml"):
eml_path = os.path.join(eml_dir, file)
eml_name = os.path.splitext(file)[0]
# 为每封邮件创建单独文件夹
output_dir = os.path.join(eml_dir, eml_name)
os.makedirs(output_dir, exist_ok=True)
print(f"\n📧 正在处理:{file}")
extract_images_from_eml(eml_path, output_dir)
print(f"📦 处理完成,图片已保存到:{output_dir}")
if __name__ == "__main__":
main()然后用记事本打开这个脚本文件,找到「eml_dir = r"C:\Users\你的用户名\Desktop\邮件提图"」这行,把路径改成你自己的文件夹路径(比如你的eml文件在D盘“邮件图片”文件夹,就改成「eml_dir = r"D:\邮件图片"」)。
👉 怎么找路径?打开文件夹,点击顶部地址栏,地址会变成文本,直接复制粘贴进去即可,前面要加“r”哦!
比如你有20封eml邮件,运行后会自动生成20个文件夹,每个文件夹里都是对应邮件的图片,不用手动分类,超省心!
很多人纠结“该用哪个方案”,直接看下面的对比表,按自己的需求选就行:
| 对比维度 | 方案一:直接提取(无eml) | 方案二:eml+Python脚本 |
| 适合邮件数量 | 少(1-10封) | 多(10封以上) |
| 操作复杂度 | 简单(点击/装插件),新手秒会 | 略复杂(装Python+改路径),学会一次终身用 |
| 分类效果 | 需手动分类图片(所有图混在一起) | 自动按邮件分文件夹,不用手动整理 |
| 支持邮箱工具 | 限Outlook客户端、主流网页版 | 所有邮箱(只要能存eml) |
| 额外工具需求 | 浏览器插件(可选) | Python环境(一次性安装) |
试试这两种方法,你会发现:原来半小时的活,现在1分钟就能完成,省下的时间喝杯咖啡不香吗?
如果操作时遇到问题,评论区留言你的报错提示,我来帮你解决~
(需要方案二的完整脚本文件,后台回复「邮件提图脚本」直接获取,不用手动复制!)