Выбирайте письма только из почтового ящика через poplib
Вопрос
Мне нужно загружать электронные письма из входящей почты gmail только с помощью poplib. К сожалению, я не вижу никакой возможности выбрать только Входящие, и poplib также дает мне электронные письма от отправленных элементов.
Как выбрать электронную почту только из папки "Входящие"?
Я не хочу использовать какие-либо специальные библиотеки Gmail.
Решение
POP3 не имеет понятия «папки». Если gmail показывает вам как «отправленную», так и «полученную» почту, у вас действительно нет другого выбора, кроме как получить всю эту электронную почту.
Возможно, вам лучше использовать IMAP4 вместо POP3. В Python есть библиотеки, которые будут работать с сервером gmail IMAP4.
Другие советы
Я предполагаю, что вы включили POP3 / IMAP доступ к вашей учетной записи GMail.
Это пример кода:
import imaplib
conn= imaplib.IMAP4_SSL('imap.googlemail.com')
conn.login('yourusername', 'yourpassword')
code, dummy= conn.select('INBOX')
if code != 'OK':
raise RuntimeError, "Failed to select inbox"
code, data= self.conn.search(None, ALL)
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)')
# you can also use '(RFC822.HEADER)' only for headers
if code == 'OK':
pass # your code here
else:
raise RuntimeError, "could not retrieve msgid %r" % msgid
conn.close()
conn.logout()
или что-то подобное.
Этот код Java предполагает, что вы можете выбрать конкретную " папку " для загрузки, даже при использовании POP3. Опять же, это использует Java, а не Python, поэтому YMMV.