Ternick
@Ternick

Проблемы при попытке получить письма с pop.yandex.by?

КОД
def main(email, password):
	pop = POP3_SSL("pop.yandex.by")
	pop.user(email)
	pop.pass_(password)
	response, lst, octets = pop.list()
	print(response, lst, octets)
	for msgnum, msgsize in [i.split() for i in lst]:
		(resp, lines, octets) = pop.retr(msgnum)# Ошибка возникает тут
		msgtext = "n".join(lines) + "nn"
		message = email.message_from_string(msgtext)
		print(message)
		pop.dele(msgnum)
	pop.quit()

Ошибка

b'+OK 1 19430' [b'1 19430'] 9
Traceback (most recent call last):
  File "C:\Users\FFF\Desktop\kkk\main.py", line 89, in <module>
    main(*data)
  File "C:\Users\FFF\Desktop\kkk\main.py", line 79, in main
    (resp, lines, octets) = pop.retr(msgnum)
  File "C:\Users\FFF\AppData\Local\Programs\Python\Python36\lib\poplib.py", line 248, in retr
    return self._longcmd('RETR %s' % which)
  File "C:\Users\FFF\AppData\Local\Programs\Python\Python36\lib\poplib.py", line 183, in _longcmd
    return self._getlongresp()
  File "C:\Users\FFF\AppData\Local\Programs\Python\Python36\lib\poplib.py", line 159, in _getlongresp
    resp = self._getresp()
  File "C:\Users\FFF\AppData\Local\Programs\Python\Python36\lib\poplib.py", line 152, in _getresp
    raise error_proto(resp)
poplib.error_proto: b'-ERR message does not exist or deleted. sc=XnamNVYWfOs1_102349_1-4aab5eef9bfd'


Понятия не имею, почему так происходит, я уже всё перепробовал, веб версия работает нормально. Из интересного нашёл только это:
Я надеюсь это не оно :)
imagea58b4894a9a8c8c2.png

Есть хоть предположения какие-то с чем это связано и можно ли это исправить ?
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
Ternick
@Ternick Автор вопроса
Фишка в том, что msgnum представлена в byte, а нужно в int, вот и весь вопрос.
FIX

def main(email, password):
  pop = POP3_SSL("pop.yandex.by")
  pop.user(email)
  pop.pass_(password)
  response, lst, octets = pop.list()
  print(response, lst, octets)
  for msgnum, msgsize in [i.split() for i in lst]:
    (resp, lines, octets) = pop.retr(int(msgnum))
    msgtext = "n".join(lines) + "nn"#Нужно отлаживать, тут бред происходит
    message = email.message_from_string(msgtext)# тут тоже
    print(message)
    pop.dele(int(msgnum))
  pop.quit()

Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@qid00000000
Мало что знаю, но информацию найду в гугле
Если перевести ошибку - сообщение отсутствует, либо удалено.

Проверьте:
1. Что вы все же авторизуетесь на сервере (есть соединение с сервером, логин и пароль верны)
2. В почтовом ящике есть сообщения

Если на этом этапе проблему не найдете, попробуйте код в интерактивном режиме запустить (-i) и уже заниматься отладкой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы