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

如何让Python中监控邮箱的while循环实现动态更新

解决Gmail收件箱监控循环无法更新邮件数量的问题

你的代码核心问题是仅在循环启动前执行了一次邮件搜索,selected_mails变量存储的是首次查询的结果,循环内只是重复打印这个固定值,自然不会同步新邮件的变化。

修改后的代码

将邮件查询逻辑移到循环内部,同时添加查询间隔避免频繁请求:

import imaplib
import time
import os

username = "example@gmail.com"
app_password = "example"
gmail_host = 'imap.gmail.com'

# 初始化连接只执行一次
mail = imaplib.IMAP4_SSL(gmail_host)
mail.login(username, app_password)
mail.select()

while True:
    # 每次循环重新查询收件箱邮件
    _, selected_mails = mail.search(None, 'ALL')
    mail_count = len(selected_mails[0].split())
    
    # 清除控制台旧输出,让显示更整洁
    os.system('cls' if os.name == 'nt' else 'clear')
    print(f"当前收件箱邮件总数: {mail_count}")
    
    # 控制查询间隔,避免触发Gmail频率限制,可自行调整时长
    time.sleep(5)

关键修改说明

  • 把mail.search(None, 'ALL')放入while True循环内,确保每次循环都拉取最新的邮件列表
  • 添加time.sleep()限制查询频率,防止因请求过于频繁被Gmail临时限制连接
  • 加入控制台清屏逻辑,让邮件数量的更新显示更直观

额外注意事项

  • 确认你的Gmail账户已开启IMAP功能,且使用的是应用专用密码(若开启了两步验证)
  • 如果长时间运行后出现连接断开,可在循环内添加重连逻辑(捕获imaplib.IMAP4.abort异常后重新登录)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:31:09