繁体   English   中英

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

[英]How can I remove all the email not in the important or sent folder?

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

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

如何编写代码来完成此任务? 问题可能成为另一种形式:

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

我的Gmail中有5封电子邮件 - 收件箱,我将所有这些邮件保存在g:\\ mygmails中,并将它们命名为0th.myemail 1th.myemail 2th.myemail 3th.myemail 4th.myemail使用以下代码,现在怎么能我通过雷鸟或一些电子邮件软件阅读它们,我不想写自己的代码来阅读它们?

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()

在谷歌上做了一些挖掘后,我找到了一个github存储库 ,它提供了一个模块来做这件事。 它没有很好的文档记录,但源代码非常容易阅读,所以它根本不是一个重要的损失。

在使用此模块方面,您可以使用指定的标签加载每封电子邮件并标记它们以进行保存,然后浏览所有电子邮件并删除尚未标记的电子邮件。

我目前没有看到在远程服务器上标记电子邮件的自然方式,因此您可能必须实现将电子邮件记录为字符串并将其存储在一set

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

例如:如果要将特定邮箱的条目复制到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()

因此,假设您相应地调整了全局变量,现在您在Gmail邮箱帐户username mailboxname的所有电子邮件中都有一个python列表(在python变量emails )。 一旦你有了这个,你可以轻松地做一些事情,比如将它保存到文件中

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM