Как я могу проверить количество непрочитанных сообщений Gmail в моем почтовом ящике с коротким Python script? Бонусные баллы за получение пароля из файла.
Проверьте непрочитанное количество сообщений Gmail с помощью Python
Ответ 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)
Ответ 5
Ну, это не фрагмент кода, но я предполагаю, что imaplib и Gmail IMAP-инструкции, вы получите больше всего.
Ответ 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
Получает регистрационную информацию из текстового файла, предполагая, что имя пользователя и пароль находятся в отдельных строках.