如何使用Python同时检查多个邮件账户的收件箱邮件数量?
如何扩展Python脚本同时检查多个邮箱账户的邮件数量?
这事儿其实很好解决,核心就是把多个账户的配置信息规整成一个可循环的集合,然后重复执行你原来的单账户检查逻辑就行。别说2个、3个,后续再加N个账户都只需要在配置里加一行,非常方便。
修改后的完整代码
from imapclient import IMAPClient # 把所有需要检查的账户信息存在一个列表里,每个元素是字典,字段清晰好维护 accounts = [ { "name": "name_of_account_1", "username": "username@domain.onmicrosoft.com", "password": "password", "imap_server": "outlook.office365.com" }, { "name": "name_of_account_2", "username": "user2@domain.onmicrosoft.com", "password": "password2", "imap_server": "outlook.office365.com" }, { "name": "name_of_account_3", "username": "user3@domain.com", "password": "password3", "imap_server": "imap.domain.com" # 不同类型的IMAP服务器也能兼容 } ] # 循环遍历每个账户,执行邮件数量检查逻辑 for account in accounts: try: # 初始化IMAP客户端并完成登录 client = IMAPClient(account["imap_server"], ssl=True) client.login(account["username"], account["password"]) # 选中收件箱(只读模式避免误操作)并查询所有邮件 client.select_folder("INBOX", readonly=True) result = client.search() print(f"{account['name']}: {len(result)}") # 完成操作后登出账户 client.logout() except Exception as e: # 新增异常处理,避免单个账户出错导致整个脚本终止 print(f"处理账户 {account['name']} 时遇到问题: {str(e)}")
关键改动说明
- 配置聚合:将每个账户的独立参数打包成字典,再统一存入列表,后续新增/删除账户只需要修改这个列表,不用动核心逻辑。
- 循环复用逻辑:通过
for循环遍历所有账户,重复执行你原本写好的单账户检查流程,最大化复用代码。 - 异常容错:加入
try-except块,就算某个账户因为密码错误、网络波动或服务器异常无法访问,也不会影响其他账户的检查,还能输出错误信息方便排查。
输出示例
name_of_account_1: 18 name_of_account_2: 42 name_of_account_3: 7
内容的提问来源于stack exchange,提问作者yabbah
相关产品推荐
相关产品推荐

