read - Verifique el conteo no leído de los mensajes de Gmail con Python
read gmail python (7)
¿Cómo puedo verificar el número de mensajes de Gmail sin leer en mi bandeja de entrada con un breve script de Python? Puntos de bonificación por recuperar la contraseña de un archivo.
Bueno, no es un fragmento de código, pero me imagino usando imaplib y las instrucciones IMAP de Gmail te llevan la mayor parte del camino hasta allí.
Bueno, voy a seguir adelante y deletrear una solución imapilar como sugirió Cletus. No veo por qué las personas sienten la necesidad de usar gmail.py Atom para esto. Este tipo de cosas es para lo que IMAP fue diseñado. Gmail.py es particularmente atroz, ya que en realidad analiza el HTML de Gmail. Eso puede ser necesario para algunas cosas, ¡pero no para contar un mensaje!
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)
La precompresión de la expresión regular puede mejorar el rendimiento ligeramente.
Para una implementación completa de la lectura del valor de la alimentación atómica:
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)
Te aconsejo que uses la alimentación por átomo de Gmail
Es tan simple como esto:
import urllib
url = ''https://mail.google.com/mail/feed/atom/''
opener = urllib.FancyURLopener()
f = opener.open(url)
feed = f.read()
A continuación, puede utilizar la función de análisis de fuentes en este bonito artículo: Compruebe Gmail el camino pitónico
Una vez que haya iniciado sesión (haga esto manualmente o con gmail.py) debe usar el feed.
Se encuentra aquí: http://mail.google.com/mail/feed/atom
Es la forma en que Google lo hace. Aquí hay un enlace a su extensión js chrome: http://dev.chromium.org/developers/design-documents/extensions/samples/gmail.zip
A continuación, podrá analizar el xml que se ve así:
<?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>
Use 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
Obtiene la información de inicio de sesión desde un archivo de texto asumiendo que el nombre de usuario y la contraseña están en líneas separadas.
import imaplib
obj = imaplib.IMAP4_SSL(''imap.gmail.com'',''993'')
obj.login(''username'',''password'')
obj.select()
obj.search(None,''UnSeen'')