使用Python检查未读的Gmail邮件数量

如何使用简短的Python脚本检查收件箱中未读邮件的数量? 用于从文件中检索密码的奖励点数。

import imaplib obj = imaplib.IMAP4_SSL('imap.gmail.com','993') obj.login('username','password') obj.select() obj.search(None,'UnSeen') 

我build议您使用Gmailprimefaces提要

这是如此简单:

 import urllib url = 'https://mail.google.com/mail/feed/atom/' opener = urllib.FancyURLopener() f = opener.open(url) feed = f.read() 

然后,您可以在这篇不错的文章中使用Feedparsingfunction: 检查Gmail pythonic的方式

那么,我将继续前进,并按Cletus的build议拼出一个imaplib解决scheme。 我不明白为什么人们觉得有必要使用gmail.py或Atom来做这件事。 这种事情是IMAP的devise目的。 Gmail.py尤其令人震惊,因为它实际上是parsingGmail的HTML。 对于某些事情来说,这可能是必要的,但不要得到一个消息!

 import imaplib, re conn = imaplib.IMAP4_SSL("imap.gmail.com", 993) conn.login(username, password) unreadCount = re.search("UNSEEN (\d+)", conn.status("INBOX", "(UNSEEN)")[1][0]).group(1) 

预编译正则expression式可能会略微提高性能。

为了完整的实现读取atom的值:

 import urllib2 import base64 from xml.dom.minidom import parse def gmail_unread_count(user, password): """ Takes a Gmail user name and password and returns the unread messages count as an integer. """ # Build the authentication string b64auth = base64.encodestring("%s:%s" % (user, password)) auth = "Basic " + b64auth # Build the request req = urllib2.Request("https://mail.google.com/mail/feed/atom/") req.add_header("Authorization", auth) handle = urllib2.urlopen(req) # Build an XML dom tree of the feed dom = parse(handle) handle.close() # Get the "fullcount" xml object count_obj = dom.getElementsByTagName("fullcount")[0] # get its text and convert it to an integer return int(count_obj.firstChild.wholeText) 

那么这不是一个代码片段,但我想象一下,使用imaplib和Gmail的IMAP指令让你大部分的方式。

一旦你login(手动或使用gmail.py),你应该使用饲料。

它位于: http : //mail.google.com/mail/feed/atom

这是Google做它的方式。 这是一个链接到他们的js chrome扩展: http : //dev.chromium.org/developers/design-documents/extensions/samples/gmail.zip

然后,您将能够parsing如下所示的xml:

 <?xml version="1.0" encoding="UTF-8"?> <feed version="0.3" xmlns="http://purl.org/atom/ns#"> <title>Gmail - Inbox for yourmail@gmail.com</title> <tagline>New messages in your Gmail Inbox</tagline> <fullcount>142</fullcount> 

使用Gmail.py

 file = open("filename","r") usr = file.readline() pwd = file.readline() gmail = GmailClient() gmail.login(usr, pwd) unreadMail = gmail.get_inbox_conversations(is_unread=True) print unreadMail 

从文本文件中获取login信息,假定login名和密码位于不同的行上。