есть ли способ в Python получить доступ к учетной записи электронной почты (мне это понадобится для gmail, но лучше, если она будет работать) и иметь возможность видеть количество сообщений в папке «Входящие» (возможно, даже только непрочитанные сообщения) ? Спасибо.
Подсчет количества сообщений в учетной записи электронной почты с помощью python
Ответы (4)
Альтернативное специальное решение Gmail для поиска непрочитанных сообщений:
Gmail предлагает атомарные фиды для сообщений. Например:
https://mail.google.com/mail/feed/atom/ ( непрочитанные сообщения во входящих) http://mail.google.com/mail/feed/atom/labelname/ (непрочитанные сообщения в labelname) http://mail.google.com/mail/feed/atom/unread/ (все непрочитанные сообщения)
Таким образом, вы можете использовать прекрасную библиотеку feedparser для захвата фида и подсчета записей.
Однако теперь, когда я смотрю на это, кажется, что лента непрочитанных сообщений возвращает только до 20 записей, так что это может быть немного ограничено.
person
fitzgeraldsteele
schedule
10.06.2010
Вы можете попробовать это
import imaplib
obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)
obj.login('username', 'password')
obj.select('Inbox') <-- it will return total number of mail in Inbox i.e
('OK', ['50'])
obj.search(None,'UnSeen') <-- it will return the list of uids for Unseen mails
person
Avadhesh
schedule
15.06.2010
эй .. это не выводит никакого результата .. изменились ли библиотеки после этого?
- person ScipioAfricanus; 13.04.2018
Основываясь на ответе Авадхеша:
#! /usr/bin/env python3.4
import getpass
import imaplib
mail = imaplib.IMAP4_SSL('imap.server.com')
mypassword = getpass.getpass("Password: ")
address = '[email protected]'
mail.login(address, mypassword)
mail.select("inbox")
print("Checking for new e-mails for ",address,".", sep='')
typ, messageIDs = mail.search(None, "UNSEEN")
messageIDsString = str( messageIDs[0], encoding='utf8' )
listOfSplitStrings = messageIDsString.split(" ")
if len(listOfSplitStrings) == 0:
print("You have no new e-mails.")
elif len(listOfSplitStrings) == 1:
print("You have",len(listOfSplitStrings),"new e-mail.")
else:
print("You have",len(listOfSplitStrings),"new e-mails.")
person
Matthew R. Karlsen
schedule
23.05.2014
привет, твой ответ мне очень помог. Я новичок в imaplib и пытаюсь получить 20 последних электронных писем на нашем сервере imap. Можете ли вы помочь мне, как я это сделаю?
- person hocuspocus31; 16.08.2016