首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过python和IMAP删除超过2天的邮件?

如何通过python和IMAP删除超过2天的邮件?
EN

Stack Overflow用户
提问于 2020-10-30 18:07:02
回答 2查看 431关注 0票数 1

我有一个脚本,可以下载特定文件夹/标签的google外卖备份导出,一旦该部分完成,下一步就是执行删除脚本。因为我做外卖的过程,它需要2-3天来创建备份之前,我可以下载它,因为电子邮件备份是相当大。因此,在这2-3天内,当我等待备份准备好下载时,我会收到电子邮件,而这些邮件将不会出现在我请求的备份导出中。

所以我希望我的脚本只删除电子邮件从今天的日期2-3天。下面是我的代码,我知道我需要过滤/搜索的部分在“typ,data = mail.search(None,'ALL')”中,然而,我不确定在哪里准确地过滤它,并告诉它只标记/选择2-3天前发送到垃圾桶的电子邮件。有什么帮助吗?

代码语言:javascript
运行
复制
def deleteEmailIMAP(user, password, IMAP):
        mail = imaplib.IMAP4_SSL(IMAP)
        mail.login(user, password)
        print("Logging into account:", email )
        mail.select("Process") #select folder/label
        print("Process Folder Selected")
        time.sleep(2)
        typ, data = mail.search(None, 'ALL')
        print(" Emails from Process Folder sent to Trash")
        for num in data[0].split():
            mail.store(num, '+X-GM-LABELS', r'(\Trash)') #sent to trash and removed from folder
        mail.expunge()
        print("Sent to Trash.")
        print("Emptying Trash & Expunge...")
        mail.select('[Gmail]/Trash')  # select all trash
        mail.store("1:*", '+FLAGS', '\\Deleted')  #Flag all Trash as Deleted
        mail.expunge()  # not need if auto-expunge enabled
        print("Done. Closing connection & logging out.")
        time.sleep(2)
        mail.close()
        mail.logout()
        exit()
    deleteEmailIMAP(email, passw, imapserver)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-05 17:58:43

代码语言:javascript
运行
复制
import datetime
from imap_tools import MailBox, A

with MailBox('imap.mail.com').login('test@mail.com', 'password', 'INBOX') as mailbox:
    # delete messages older than 2 days from current (INBOX) folder
    mailbox.delete(mailbox.fetch(A(date_lt=datetime.date.today() - datetime.timedelta(days=2))))

https://github.com/ikvk/imap_tools

票数 1
EN

Stack Overflow用户

发布于 2020-10-30 19:04:36

这是代码中的关键一行:

代码语言:javascript
运行
复制
typ, data = mail.search(None, 'ALL')

您可以将ALL更改为例如BEFORE "12-Oct-2020",因为您实际上并不想搜索所有邮件。有关详细信息和其他可能的搜索关键字,请参阅规范的pages 49-54page 84

顺便说一句,我很惊讶这里有多少问题包含了搜索所有邮件的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64606297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档