用 Python 实现邮件自动处理:从脚本到定时任务的实践

举报
yd_229747899 发表于 2026/10/28 19:07:35 2026/10/28
【摘要】 背景日常工作中经常要处理大量重复邮件:筛选、归档、提取关键信息再转发。如果全靠人工,不仅耗时还容易漏。最近我把这套流程用 Python 自动化了,分享一下实现思路。 整体思路流程拆成四步:拉取邮件:通过 IMAP 协议读取收件箱筛选分类:按发件人、主题关键词、时间做规则匹配提取信息:用正则解析正文中的关键字段执行动作:归档、加标签、转发或落库 核心代码 1. 连接邮箱并拉取邮件import...

背景

日常工作中经常要处理大量重复邮件:筛选、归档、提取关键信息再转发。如果全靠人工,不仅耗时还容易漏。最近我把这套流程用 Python 自动化了,分享一下实现思路。

整体思路

流程拆成四步:

  1. 拉取邮件:通过 IMAP 协议读取收件箱
  2. 筛选分类:按发件人、主题关键词、时间做规则匹配
  3. 提取信息:用正则解析正文中的关键字段
  4. 执行动作:归档、加标签、转发或落库

核心代码

1. 连接邮箱并拉取邮件

import imaplib
import email
from email.header import decode_header

def connect_mail(host, user, password):
    mail = imaplib.IMAP4_SSL(host)
    mail.login(user, password)
    mail.select("INBOX")
    return mail

def fetch_unseen(mail):
    status, data = mail.search(None, "UNSEEN")
    return data[0].split()

2. 按规则分类

RULES = [
    {"keyword": "账单", "folder": "Bills"},
    {"keyword": "验证码", "folder": "Codes"},
    {"keyword": "面试", "folder": "Jobs"},
]

def classify(subject):
    for rule in RULES:
        if rule["keyword"] in subject:
            return rule["folder"]
    return None

3. 解析正文关键字段

import re

def extract_code(body):
    # 提取 6 位数字验证码
    m = re.search(r"\b\d{6}\b", body)
    return m.group(0) if m else None

def extract_amount(body):
    # 提取金额,如 ¥1,234.56
    m = re.search(r"¥([\d,]+\.\d{2})", body)
    return m.group(1) if m else None

4. 定时执行

Linux 上用 cron,每 5 分钟跑一次:

*/5 * * * * /usr/bin/python3 /home/user/mail_bot.py >> /var/log/mail_bot.log 2>&1

脚本里做好幂等:处理过的邮件打上已读标记或移到已处理文件夹,避免重复处理。

踩过的坑

1. 字符编码问题

中文邮件主题经常是 MIME 编码,直接读会乱码。一定要用 decode_header 解码:

def decode_subject(raw):
    parts = decode_header(raw)
    text = ""
    for content, charset in parts:
        if isinstance(content, bytes):
            text += content.decode(charset or "utf-8", errors="ignore")
        else:
            text += content
    return text

2. IMAP 连接超时

长时间运行的脚本会遇到连接断开。做法是每次执行重新连接,或者捕获异常后重连,不要假设连接一直有效。

3. 不要把密码写死在代码里

用环境变量或配置文件存放账号密码,配置文件权限设为 600。更稳妥的做法是用应用专用密码,而不是主密码。

效果

跑了两个月下来,每天大概能自动处理上百封邮件,人工只需要看汇总结果。最有用的其实是规则分类和关键信息提取这两步,把"找邮件"变成了"看结果"。

小结

邮件自动化的核心不复杂:IMAP 拉取 + 规则分类 + 正则提取 + 定时执行。关键是规则要贴合自己的实际场景,先从最常见的几类邮件开始,跑起来再慢慢加规则。代码量不大,但省下来的时间很实在。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。