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

时间:2009-06-04 23:05:30

标签: python email gmail pop3

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

7 个答案:

答案 0 :(得分:54)

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

答案 1 :(得分:25)

我建议你使用Gmail atom feed

就这么简单:

import urllib

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

然后,您可以在这篇精彩文章中使用Feed解析功能:Check Gmail the pythonic way

答案 2 :(得分:24)

好吧,我将继续按照Cletus的建议拼出一个imaplib解决方案。我不明白为什么人们觉得需要使用gmail.py或Atom。这种事情是IMAP的设计目标。 Gmail.py特别令人震惊,因为它实际上解析了Gmail的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)

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

答案 3 :(得分:7)

要从原子提取中读取值的完整实现:​​

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)

答案 4 :(得分:6)

嗯,这不是一个代码段,但我想使用imaplib,而Gmail IMAP instructions可以帮到你。

答案 5 :(得分:1)

登录后(手动或使用gmail.py执行此操作),您应该使用Feed。

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

谷歌就是这样做的。这是他们的js chrome扩展程序的链接: http://dev.chromium.org/developers/design-documents/extensions/samples/gmail.zip

然后您将能够解析看起来像这样的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>

答案 6 :(得分:-1)

使用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

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