Эта строка
result, messages = mail.uid('fetch', ','.join(uids), '(BODY[])')
поднимает исключение
Элемент последовательности TypeError 0: ожидаемый экземпляр str, найдено байтов
При проверке строки, 'fetch'
и '(BODY[])'
уже являются строками, поэтому они вряд ли будут проблемой.
Это оставляет ','.join(uids)
. uids
на самом деле представляет собой список байтов экземпляров, поэтому str.join вызывает исключение, поскольку ожидает итерацию из str экземпляров.
Чтобы устранить проблему, декодируйте numbers[0]
до str
, прежде чем манипулировать ею.
result, numbers = mail.uid('search', None, "ALL")
uids = numbers[0].decode().split() # <- decode before splitting
result, messages = mail.uid('fetch', ','.join(uids), '(BODY[])')