You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用IMAPLIB筛选特定发件人的邮件?

筛选Gmail收件箱指定发件人邮件实现方案

你已经完成了IMAP连接、账号登录、收件箱选中的基础逻辑,在此基础上补充搜索筛选的核心代码即可实现需求,完整可运行代码如下:

import imaplib
import email
from email.header import decode_header

# 你已编写的基础代码
gmail = imaplib.IMAP4_SSL("imap.gmail.com", 993)
gmail.login(gmail_username,gmail_password)
gmail.select('Inbox', readonly=True)

# 核心筛选逻辑:搜索发件人为a@gmail.com的邮件
status, data = gmail.search(None, 'FROM "a@gmail.com"')

if status != 'OK':
    print("邮件搜索请求失败")
    gmail.close()
    gmail.logout()
    exit()

# 提取匹配的邮件ID列表
email_ids = data[0].split()
if not email_ids:
    print("未找到发件人为a@gmail.com的邮件")
else:
    print(f"共匹配到{len(email_ids)}封目标邮件")
    # 示例:遍历输出所有匹配邮件的主题
    for e_id in email_ids:
        _, msg_content = gmail.fetch(e_id, "(RFC822)")
        for part in msg_content:
            if isinstance(part, tuple):
                msg = email.message_from_bytes(part[1])
                # 解码邮件主题避免乱码
                subject, encode = decode_header(msg["Subject"])[0]
                if isinstance(subject, bytes):
                    subject = subject.decode(encode if encode else "utf-8")
                print(f"邮件ID:{e_id.decode()},主题:{subject}")

# 操作结束关闭连接
gmail.close()
gmail.logout()

注意事项

  • 若你的Gmail账号开启了两步验证,需要先到Google账号后台生成应用专用密码,使用应用密码替代普通账号密码登录,否则会触发登录拦截
  • IMAP搜索指令的关键词不区分大小写,FROM也可以写为from,发件人邮箱需要用引号包裹,避免特殊字符导致解析错误
  • 可以自由组合搜索条件,比如需要同时筛选未读+指定发件人,搜索参数可以改为'UNSEEN FROM "a@gmail.com"'

内容的提问来源于stack exchange,提问作者Rikky Bhai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:54:05