[英]Delete messages from webmail - not working on all folders
我正在使用以下代码从网络邮件中删除电子邮件:
def process_webmail():
box = imaplib.IMAP4_SSL(server)
box.login(username, password)
print("Connected to webmail")
_tuple = box.list()
if len(_tuple) <= 0:
return
before_date = (datetime.date.today() - datetime.timedelta(30)).strftime("%d-%b-%Y")
for folder in _tuple[1]:
_folder_name = folder.split('\"/\"')
f = _folder_name[1].strip().strip('\"')
if f.lower() == "inbox":
pass
else:
box.select(f)
# typ, data = box.search(None, 'ALL')
typ, data = box.search(None, '(BEFORE {0})'.format(before_date))
if data != ['']:
for num in data[0].split():
box.store(num, '+FLAGS', '\\Deleted')
print(box.expunge())
box.close()
box.logout()
我们有两种类型的文件夹。 1)创建文件夹并将邮件手动复制到其中。 2) 过滤器应用于已复制的邮件。
上面的代码适用于 1,而电子邮件只是在 2 的情况下被标记为已删除。不确定是什么问题。 有人请帮助我理解这个问题。
Roundcube 是正在使用的网络邮件。
以下代码有效。 错位的 .expunge()
def process_webmail():
box = imaplib.IMAP4_SSL(server)
box.login(username, password)
print("Connected to webmail")
_tuple = box.list()
if len(_tuple) <= 0:
return
before_date = (datetime.date.today() - datetime.timedelta(30)).strftime("%d-%b-%Y")
for folder in _tuple[1]:
_folder_name = folder.split('\"/\"')
f = _folder_name[1].strip().strip('\"')
if f.lower() == "inbox":
pass
else:
box.select(f)
# typ, data = box.search(None, 'ALL')
typ, data = box.search(None, '(BEFORE {0})'.format(before_date))
if data != ['']:
for num in data[0].split():
box.store(num, '+FLAGS', '\\Deleted')
box.expunge()
box.close()
box.logout()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.