我的所有邮箱中的电子邮件数量多于重要邮箱和已发邮箱数量。我想删除所有不在重要邮箱或已发邮箱中的邮件。
我无法执行以下任何步骤
1)删除所有邮箱中的所有电子邮件,(当我删除所有邮箱中的所有电子邮件时,重要邮箱和已发邮箱中的所有电子邮件将同时删除)
2)并从重要邮箱和已发邮箱中复制电子邮件。
如何编写代码来完成此任务? 问题可能成为另一种形式:
如何在我的Gmail邮箱中复制电子邮件:“[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()
答案 0 :(得分:3)
在谷歌上做了一些挖掘后,我找到了一个github repository,提供了一个模块来做这件事。它没有很好的文档记录,但源代码非常容易阅读,所以它根本不是一个重大的损失。
在使用此模块方面,您可以使用指定的标签加载每封电子邮件,然后标记进行保存,然后浏览所有电子邮件并删除尚未标记
我目前没有看到标记远程服务器上的电子邮件的自然方式,因此您可能必须实现将电子邮件记录为字符串并将其存储在{{1 }}
如果您还有任何问题,请在此回答中发表评论,我可以详细说明。
例如:如果您想将特定邮箱的条目复制到python数据结构中,您可以这样做:
set
因此,假设您相应地调整了全局变量,现在您在# 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帐户emails
中的所有电子邮件中都有一个python列表(在python变量mailboxname
中)。完成此操作后,您可以轻松执行将其保存到文件等操作。
答案 1 :(得分:0)
如果您喜欢Windows_PowerShell我有一个可以轻松重复使用并根据您的需求进行定制的解决方案。您可以设置Mail_User_Agent以使用Web Access API并自动执行此任务。在我的示例中,旧的Powershell(我们已经知道 - 来自Microsoft的任务自动化和配置管理框架)具有无头IE功能(将使其作为守护进程工作并允许它仅在前提条件为真时与我们通信)能够支持这一切。 更准确地说,如果您必须登录并使用防火墙Web访问API - 实现几乎相同。因此,只需一块石头,我们就会得到两只鸟 - 每天早上你都会在墙后面,知道你的邮件内容。您可以在此处查看示例solution。