问题描述
我目前没有编码经验,但一直在尝试使用我在网上找到的第三方代码段来自动删除 GMail 帐户上的电子邮件。代码如下:
import imaplib
import email
from email.header import decode_header
username = "USER"
password = "PW"
imap = imaplib.IMAP4_SSL("imap.gmail.com")
imap.login(username,password)
imap.select("INBox")
status,messages = imap.search(None,'BEFORE "02-MAR-2021"')
messages = messages[0].split(b' ')
for mail in messages:
_,msg = imap.fetch(mail,"(RFC822)")
for response in msg:
if isinstance(response,tuple):
msg = email.message_from_bytes(response[1])
subject = decode_header(msg["Subject"])[0][0]
if isinstance(subject,bytes):
subject = subject.decode("UTF-8",errors='ignore')
print("Deleting",subject)
imap.store(mail,"+FLAGS","\\Deleted")
imap.expunge()
imap.close()
imap.logout()
一般来说,代码运行良好,直到遇到 2 个错误之一。下面列出了这些错误:
1)
imaplib.abort: command: FETCH => System Error
TypeError: expected string or bytes-like object
根据我的一点知识,以及我在网上阅读的内容,第一个错误似乎与需要重新初始化的“IMAP连接”有关。但是,脚本在我手动重新启动后再次运行。
第二个错误似乎与代码搜索要删除的电子邮件时缺少可识别的标头有关。同样,脚本在我重新启动时不起作用并继续出现此错误。
我的问题:
-
关于第二个错误:
提前致谢,任何输入都会非常有帮助。很抱歉我在这里缺乏知识,似乎我有点超出了我的深度。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)