Возникли проблемы с поплибом
Я хочу получить все письма из учетной записи Gmail, используя poplib: https://docs.python.org/2/library/poplib.html
Я сталкиваюсь с проблемой, что это не дает правильное количество электронных писем (в действительности это дало только 10%), а также электронные письма, которые он мог получить, были начальными.
Прямо сейчас я использовал тот же код, который приведен в примере документации.
import getpass, poplib
user= raw_input('Enter Username')
Mailbox = poplib.POP3_SSL('pop.googlemail.com', '995')
Mailbox.user(user)
Mailbox.pass_(getpass.getpass())
numMessages = len(Mailbox.list()[1])
print numMessages
for i in range(numMessages):
for msg in Mailbox.retr(i+1)[1]:
print msg
print Mailbox.stat()
Mailbox.quit()
Пожалуйста, скажите мне, как решить это. Спасибо
1 ответ
Решение
Из моего прошлого опыта я могу получить только около 200~300 писем, в то время как в моем полном почтовом ящике более 10 тысяч писем И мое решение было переключиться на imaplib, вот пример кода:
import imaplib
conn= imaplib.IMAP4_SSL('imap.googlemail.com')
conn.login('your_account@gmail.com', 'your_password')
status, dummy= conn.select('INBOX')
if status != 'OK':
raise RuntimeError, "Failed to select inbox"
code, data= conn.search(None, CRITERION)
if code == 'OK':
msgid_list= data[0].split()
else:
raise RuntimeError, "Failed to get message IDs"
for msgid in msgid_list:
code, data= conn.fetch(msgid, '(RFC822)')
if code == 'OK':
PROCESS(data)
else:
raise RuntimeError, "could not retrieve msgid %r" % msgid
conn.close()
conn.logout()
А для части CRITERION, посмотрите эту ссылку и выберите ту, которая вам нравится