"ошибка сокета: EOF" с использованием python imaplib. Появился после недели работы кода правильно - PullRequest
0 голосов
/ 03 июня 2019

Это мой код

mail = imaplib.IMAP4_SSL(SMTP_SERVER)
mail.login(FROM_EMAIL,FROM_PWD)
mail.select('inbox')

У меня он повторяется каждые 5 секунд, чтобы проверять новые сообщения и что-то с ним делать.После недели 100% работы я неожиданно начал получать сообщение об ошибке: «команда: SELECT => ошибка сокета: EOF»

Перед тем, как это появилось, также была очень большая задержка - это не было немедленнымя думаю, что это ошибка тайм-аута.

В любом случае, 12 часов спустя, и код снова работает нормально.Но я боюсь, что это случится снова.

Что вызвало проблему и как предотвратить ее повторение?

Спасибо

1 Ответ

0 голосов
/ 13 июня 2019

Да, это происходит с Gmail (и, возможно, с другими провайдерами) после определенного количества запросов, вам просто нужно снова войти в систему, когда это произойдет.Будьте осторожны, если вы используете идентификаторы, которые не являются идентификаторами UID, потому что они могут измениться при перезапуске.

def login(mailbox):
    print('Logging in again')
    mail = imaplib.IMAP4_SSL(SMTP_SERVER)
    mail.login(USERNAME,PASSWORD)
    mail.select(mailbox)
    return mail

mailbox='inbox'

try:
  mail.select()
except Exception as e:
  print(e)
  mail = login(mailbox)

Вы должны также выполнить ту же обработку исключений для любого метода выборки, который вы используете, потому что иногда он терпит неудачу тама также.

...