通过Python脚本删除最近收到的电子邮件?

时间:2010-02-14 06:22:18

标签: python email imap pop3

我使用Gmail和一个应用程序,如果我收到一封新邮件,通知我,在工具提示中包含其标题。 (与Miranda-IM合作的GmailNotifier)我收到的大多数电子邮件都是我不想阅读的电子邮件,并且只是为了删除所述电子邮件而不得不通过慢速连接登录Gmail。我相信插件是封闭源。

我一直(尝试编写)一个脚本,用于登录并删除“顶级”电子邮件(最近收到的电子邮件)。然而,这并不像我想象的那么容易。

我首先尝试使用imaplib,但发现它不包含我希望的任何方法。它有点像dbapi规范,只包含最小的功能,因为imap规范已经改变。然后我尝试阅读imap RFC(rfc3501)。在它的中途,我意识到我不想写一个完整的邮件客户端,所以决定尝试使用pop3。

poplib也很小但似乎有我需要的东西。但是pop3似乎不按我熟悉的任何顺序对消息进行排序。如果我想查看收到的日期,我必须在每封电子邮件上调用top()或retr()来读取标题。

我可能会遍历每个邮件标题,搜索最近的日期,但这很难看。我想尽可能避免解析我的整个邮箱。我也不想“弹出”邮箱并下载任何其他邮件。

现在已经有6个小时了,我感觉没有比我开始时更接近解决方案了。我忽略了简单的事情吗?我可以尝试另一个图书馆吗? (我发现了一个'chilkat',但它很闷热,我希望用标准库做到这一点)

1 个答案:

答案 0 :(得分:3)

import poplib

#connect to server
mailserver = poplib.POP3_SSL('pop.gmail.com')
mailserver.user('recent:YOURUSERNAME') #use 'recent mode'
mailserver.pass_('YOURPASSWORD') #consider not storing in plaintext!

#newest email has the highest message number
numMessages = len(mailserver.list()[1])

#confirm this is the right one, can comment these out later
newestEmail = mailserver.retr(numMessages)
print newestEmail

#most servers will not delete until you quit
mailserver.dele(numMessages)
mailserver.quit()

我最近与poplib合作,编写了一个非常原始的电子邮件客户端。我在一些测试电子邮件上用我的电子邮件服务器(不是gmail)测试了它,它似乎正常工作。我会先发一些虚拟的电子邮件来测试它。

注意事项:

希望这会有所帮助,它应该足以让你前进!