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

使用imaplib删除Yahoo邮件遇权限错误:STORE失败-邮箱只读

解决Yahoo邮箱IMAP删除邮件的只读权限错误

问题根源

你的代码有两个关键问题导致了只读错误:

  • 重复创建了两个IMAP连接(imap和con),逻辑混乱且完全没必要
  • 错误使用imap.select方法:你把搜索条件"(UNSEEN)"当成了第二个参数,但select的第二个参数实际是**readonly布尔值**(默认True),这直接让邮箱切换成了只读模式,后续的STORE操作自然失败

修复后的代码

import imaplib
import email

# 配置信息
email_address = "你的邮箱地址"
password = "你的应用专用密码(Yahoo需用此替代普通密码)"
imap_server = "imap.mail.yahoo.com"

# 只创建一个IMAP连接
imap = imaplib.IMAP4_SSL(imap_server, 993)
imap.login(email_address, password)

# 以可写模式打开"Learn"文件夹
imap.select("Learn", readonly=False)

# 单独搜索未读邮件(用search方法而非把条件塞给select)
typ, data = imap.search(None, "UNSEEN")
# 遍历搜索到的邮件编号
for num in data[0].split():
    # 获取邮件内容
    typ, msg_data = imap.fetch(num, '(RFC822)')
    for response_part in msg_data:
        if isinstance(response_part, tuple):
            msg = email.message_from_bytes(response_part[1])
            print('%-8s: %s' % ('FROM', msg['from']))
    # 标记邮件为待删除
    imap.store(num, "+FLAGS", "\\Deleted")

# 执行永久删除操作
imap.expunge()
# 关闭文件夹并登出
imap.close()
imap.logout()

额外注意事项

  • Yahoo邮箱IMAP需要使用应用专用密码,而非普通登录密码,需先在Yahoo账户安全中心开启两步验证后生成
  • 无需重复创建IMAP连接,单个连接即可完成所有操作
  • 筛选邮件请使用imap.search()方法,select()仅用于打开指定邮箱文件夹

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:30:49