@Bergis

Как можно исправить ошибку с imap?

У меня есть код:
import imaplib, email, os

def code_from_email(user, password):
	imap_url = "imap.mail.yahoo.com"
	connection = imaplib.IMAP4_SSL(imap_url)
	connection.login(user, password)
	connection.select("INBOX")
	start_message_uid = 1100
	result, data = connection.uid('search', None, "FROM", 'no-reply@ex.com')
	code = ''
	while code == '':
		if result == 'OK':
			for num in data[-1].split():
				result, data = connection.uid('fetch', num, '(RFC822)')
				if result == 'OK':
					email_message = email.message_from_bytes(data[0][1])
					code = str(email_message.get_payload()[1])
	connection.close()
	connection.logout()
	return code   

f = open('emails.txt', 'r')
for line in f.readlines():
	user = line.split(':')[0]
	password = line.split(':')[1]
	print(user, password)
	code  = code_from_email(user, password)


Суть кода - мы читаем из файла все логины и паролей почт , после читаем содержимое письма нужного отправителя .
Проблема состоит в том , что когда мы передаем функции 2 переменные , то в ответ получаем ошибку
File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\imaplib.py", line 610, in login
    typ, dat = self._simple_command('LOGIN', user, self._quote(password))
  File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\imaplib.py", line 1230, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "C:\Users\User\AppData\Local\Programs\Python\Python39\lib\imaplib.py", line 1055, in _command_complete
    raise self.error('%s command error: %s %s' % (name, typ, data))
imaplib.error: LOGIN command error: BAD [b'[CLIENTBUG] LOGIN Command arguments invalid']


Если же заменить 2 переменные на 2 строки
code  = code_from_email('example@yahoo.com', '12345678')

То ошибки не будет и мы успешно считаем письмо.
Подскажите пожалуйста с чем может быть связана данная ошибка и как ее решить
  • Вопрос задан
  • 420 просмотров
Решения вопроса 1
@Bergis Автор вопроса
Решил проблему немного переписав библиотеку imaplib
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы