PythonのでGmailメッセージの未読数をチェック
質問
どのように私は短いPythonスクリプトと私の受信トレイに未読のGmailメッセージの数を確認することができますか?ファイルからパスワードを取得するためのボーナスポイントます。
解決
import imaplib
obj = imaplib.IMAP4_SSL('imap.gmail.com','993')
obj.login('username','password')
obj.select()
obj.search(None,'UnSeen')
他のヒント
私はあなたが使用することをお勧め GmailのAtomフィードの
これは、このような単純な次のとおりです。
import urllib
url = 'https://mail.google.com/mail/feed/atom/'
opener = urllib.FancyURLopener()
f = opener.open(url)
feed = f.read()
あなたは、この素晴らしい記事でフィードの解析機能を使用することができます:<のhref =「http://g33k.wordpress.com/2006/07/31/check-gmail-the-python-way/」のrel = "nofollowをnoreferrer"> Gmailのにの
神託の方法を確認してくださいまあ、私は先に行くとimaplibソリューションを綴るつもりです。人々はこのためgmail.pyやAtomを使用する必要性を感じ、なぜ私は表示されません。この種のものは、IMAPがために設計されたものです。それは実際にGmailのHTMLを解析するようGmail.pyは特にひどいです。それはいくつかのもののために必要かもしれないが、メッセージ数を取得することではない!
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)
正規表現をプリコンパイルすると、わずかに性能を向上させることができる。
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 と使用して想像< href = "http://mail.google.com/support/bin/answer.py?hl=en&answer=75725" のrelは= "noreferrer"> GmailのIMAPの命令はあなたが道のほとんどを得る。
あなたは、あなたがフィードを使用する必要があります(手動またはgmail.pyでこれを行う)に記録されたらます。
これは次の場所にあります。 http://mail.google.com/mail/feed/atomする
これは、Googleがそれをしない方法です。ここでは彼らのJS Chrome拡張機能へのリンクは次のとおりです。 http://dev.chromium.org/developers/design-文書/拡張/サンプル/ 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>
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
ログイン名とパスワードは別々の行にあると仮定すると、テキストファイルからログイン情報を取得します。