很多人以为,邮箱只是收信的地方。
其实它早就变成了你的第二个硬盘——而且是个你从不去整理的硬盘。
打开邮箱,一千多封邮件,一半带附件。客户发来的合同、同事丢给你的表格、系统自动推送的报表,全挤在同一个收件箱里。想找三个月前那份报价单,翻了二十分钟,最后在"垃圾邮件"旁边的一个文件夹里翻出来了。
你肯定也遇到过。
更麻烦的是,这些附件占着邮箱配额,手机收信越来越慢,重要的新邮件差点被退回。手动一个个下载?一次几百个,点完手都麻了,还容易漏。
但这件事,用 Python 写四十行代码,三分钟就能把整座"附件山"搬空、归档、整理得明明白白。
这不是清理,这是把重复劳动交给机器。
01 先看清:你要搬的不是邮件,是附件
很多人一上来就连邮箱,结果下载了一堆垃圾邮件的附件,反而更乱。
真正该先想清楚的,是这条规则:只下载带附件的邮件?还是只下载最近半年的?按发件人分文件夹,还是按月份归档?
比如把客户发来的合同,按"客户名_年份"存进对应目录;把系统日报,按"2026-01、2026-02"这样丢进月份文件夹。
规则定清楚,代码才写对。先拿一张纸把"要什么、放哪"写下来,再动键盘——这一步省下的时间,后面会十倍还给你。
02 三行代码,先连上你的邮箱
Python 自带的 imaplib 模块,就是你的邮箱遥控器,不用装任何第三方库。
import imaplib mail = imaplib.IMAP4_SSL("imap.qq.com") # 换成你的邮箱服务器 mail.login("you@example.com", "授权码") # 注意:是授权码,不是登录密码 mail.select("INBOX")
imaplib.IMAP4_SSL 走加密连接,比老式的明文端口安全。重点是第二行:绝大多数邮箱(QQ、163、Gmail)现在不让用登录密码连第三方程序,必须去后台开"IMAP 服务"、生成一串"授权码"填在这里。这一步卡住的人最多,但搞定一次,后面永久通用。
03 核心逻辑:遍历邮件,把附件揪出来
用 email 模块把邮件拆开,遍历每个部分,碰到附件就存到本地。
import email, os typ, data = mail.search(None, "ALL") for num in data[0].split(): typ, msg = mail.fetch(num, "(RFC822)") msg = email.message_from_bytes(msg[0][1]) for part in msg.walk(): if part.get_filename(): # 有文件名=附件 name = part.get_filename() data = part.get_payload(decode=True) open(os.path.join("附件", name), "wb").write(data)
msg.walk() 把一封邮件拆成一个个"部件",正文是一个部件,附件是另一个部件。get_filename() 能拿到附件名,有名字的就是附件,没名字的是正文,这样就把它们分开了。原来要手动点几百次"下载",现在电脑一次扫完。
04 一键归档:按月份自动分文件夹
光下载还不够,名字乱、全堆在一起照样找不到。用发件时间和 os.makedirs 自动建目录。
import datetime date = msg["Date"] ym = datetime.datetime.strptime(date[:16], "%a, %d %b %Y").strftime("%Y-%m") folder = os.path.join("附件", ym) os.makedirs(folder, exist_ok=True) open(os.path.join(folder, name), "wb").write(data)
strptime 把邮件里的"Mon, 15 Jan 2026"这种英文日期,转成"2026-01"这样的月份标签,makedirs 自动建好"附件/2026-01"目录。以后找附件,先想是哪个月,点进去就完事,不用再翻收件箱。
05 亲测避坑:先在副本上跑
这是我踩过坑才记住的:第一次千万别直连真实邮箱猛下,先用一封测试邮件验证路径对不对。
而且下载前,先确认本地的"附件"目录是空的备份目录,别和正在用的文件混在一起。工具再好也只是杠杆,稳比快重要。另外,邮件里的附件名可能含中文或空格,存盘前最好用正则清理一下非法字符,避免写盘失败。
我有个做采购的朋友,供应商每天往他邮箱砸几十个报价单和发票,文件名乱得离谱,月底对账像大海捞针。
照着上面的脚本改了改筛选条件,每天下班前点一下,附件自动按月份归位,第二天直接进对应文件夹对账。
他算过一笔账:手动下载平均每次半小时还漏单,脚本跑完不到三分钟,一个月省下十多个小时。更关键的是,再也没因为漏看附件耽误过采购。省下来的不是思考时间,是重复劳动。
你可能会说,写代码本身也要时间。没错,但这个脚本写好一次,能反复用一辈子。今天整理邮箱,明天整理团队公共邮箱,后天整理项目邮箱,换的只是那行服务器地址和授权码,骨架永远不动。
所以,邮箱附件这件事,难的从来不是动手,是想清楚规则。
第一,先定义要什么、放哪;第二,用 imaplib 连邮箱、email 拆邮件;第三,walk 遍历、get_filename 抓附件;第四,按月份建目录、先测试再真跑。
把这四件事做到位,你也能用 Python 把一周的活压缩到三分钟。
如果这篇对你有用,点个在看,或者转发给那个邮箱里还堆着一千封附件的同事。
#WorkBuddy #Python自动化 #效率提升