Подтвердить что ты не робот

Проверьте непрочитанное количество сообщений Gmail с помощью Python

Как я могу проверить количество непрочитанных сообщений Gmail в моем почтовом ящике с коротким Python script? Бонусные баллы за получение пароля из файла.

4b9b3361

Ответ 1

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

Ответ 2

Советую вам использовать Gmail atom feed

Это так просто:

import urllib

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

Затем вы можете использовать функцию синтаксического анализа в этой приятной статье: Проверить Gmail на пифонов

Ответ 3

Хорошо, я собираюсь пойти дальше и описать решение 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)

Предварительная компиляция регулярного выражения может немного улучшить производительность.

Ответ 4

Для полной реализации чтения значения из корма атома:

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)

Ответ 6

Как только вы войдете в систему (сделайте это вручную или с помощью gmail.py), вы должны использовать фид.

Он расположен здесь: http://mail.google.com/mail/feed/atom

Именно так Google это делает. Вот ссылка на расширение 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 [email protected]</title>
<tagline>New messages in your Gmail Inbox</tagline>
<fullcount>142</fullcount>

Ответ 7

Используйте 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

Получает регистрационную информацию из текстового файла, предполагая, что имя пользователя и пароль находятся в отдельных строках.