Python 如何删除所有不在“重要”或“已发送”文件夹中的电子邮件?

Python 如何删除所有不在“重要”或“已发送”文件夹中的电子邮件?,python,python-3.x,gmail,imaplib,Python,Python 3.x,Gmail,Imaplib,我所有邮箱中的电子邮件比重要邮箱和已发送邮箱中的多。我想删除所有不在重要邮箱或已发送邮箱中的邮件 我无法执行以下任何步骤 1) 删除所有邮箱中的所有电子邮件(当我删除所有邮箱中的所有电子邮件时,将同时删除重要邮箱和已发送邮箱中的所有电子邮件) 2) 并从重要邮箱和已发送邮箱复制电子邮件 如何编写代码来实现这一点? 问题可以变成另一种形式: 我如何将邮箱中的邮件:“[Gmail]/&kc 2JgQ-”复制到本地目录g:\mygmail中 我的gmail收件箱中有5封电子邮件,我将它们全部保存在g:

我所有邮箱中的电子邮件比重要邮箱和已发送邮箱中的多。我想删除所有不在重要邮箱或已发送邮箱中的邮件

我无法执行以下任何步骤
1) 删除所有邮箱中的所有电子邮件(当我删除所有邮箱中的所有电子邮件时,将同时删除重要邮箱和已发送邮箱中的所有电子邮件)
2) 并从重要邮箱和已发送邮箱复制电子邮件

如何编写代码来实现这一点? 问题可以变成另一种形式:


我如何将邮箱中的邮件:“[Gmail]/&kc 2JgQ-”复制到本地目录g:\mygmail中

我的gmail收件箱中有5封电子邮件,我将它们全部保存在g:\MyGmail中,并使用以下代码将它们命名为0th.myemail 1th.myemail 2th.myemail 3th.myemail 4th.myemail,现在我如何通过thunderbird或一些电子邮件软件读取它们,我不想编写自己的代码来读取它们

import email,imaplib
att_path="g:\\mygmails\\"
user="xxxx"
password="yyyy"
con=imaplib.IMAP4_SSL('imap.gmail.com')
con.login(user,password)
con.select('INBOX')
resp, items = con.search(None, "ALL")  
items = items[0].split() 
for id,num in enumerate(items):
    resp, data = con.fetch(num, "(RFC822)") 
    data=data[0][1]
    fp = open(att_path+str(id)+"th"+".myemail", 'wb')
    fp.write(data)
    fp.close()

在谷歌上做了一些挖掘之后,我发现了一个提供了一个模块来实现这一点。它没有很好的文档记录,但是源代码很容易阅读,所以它根本不是一个重大损失

在使用此模块方面,您可以加载带有指定标签的每封电子邮件并将其标记为保存,然后浏览所有电子邮件并删除未标记的电子邮件

我目前看不到在远程服务器上标记电子邮件的自然方式,因此您可能需要实现一些功能,将电子邮件记录为字符串并存储在
集中

如果您还有任何问题,请发表评论,我可以详细说明

例如:如果要将特定邮箱的条目复制到python数据结构中,可以这样做:

# Global Variables
username, password, mailboxname = '', '', '[Gmail]/&kc 2JgQ-'

# Set up
import gmail
g = gmail.Gmail()
g.login(username, password)

# Actual code.
emails = []
for email in g.mailbox(mailboxname).mail():
    emails.append(email.fetch())

# Tear down.
g.logout()
因此,假设您相应地调整了全局变量,您现在有了一个python列表(在python变量
emails
中),其中包含gmail帐户
用户名
mailboxname
中的所有电子邮件。一旦你有了这个,你可以很容易地做一些事情,比如把它保存到一个文件中。

如果你愿意,我有一个解决方案,可以轻松地重用,并根据你的需要定制。您可以将Mail_User_Agent设置为使用Web Access API并自动执行此任务。在我的例子中,良好的旧Powershell(我们已经知道,微软的任务自动化和配置管理框架)具有无头IE功能(将使其作为守护进程工作,并且仅在前提条件为真时才允许它与我们通信),能够支持所有这一切。
更确切地说,如果您必须登录并使用防火墙Web访问API,则实现几乎相同。因此,一石二鸟——每天早上你都会躲在墙后,知道你的邮件内容。这里你可以看到示例。

我如何在我的Gmail邮箱中复制电子邮件:“[Gmail]/&kc 2JgQ-”到本地目录g:\mygmail?在我编辑的帖子中,我用自己的方法成功地将电子邮件复制到本地目录中,现在我如何通过thunderbird或一些电子邮件软件来阅读它们?@如果你将其保存为
.eml
文件,这就是一份文献,然后在thunderbird中,您应该能够通过进入文件>打开>保存的消息来打开它。。。