Вам необходимо сначала проверить
for part in msg.walk():
print (part.get_content_type())
, а затем в главном цикле for -
for part in msg.walk():
, просто продолжить для типов содержимого, которые присутствуют в теле письма, но отсутствуюттребуется вами.
Вы также можете поставить проверку непосредственно для требуемого content_type и затем прочитать имя файла.
ex-я столкнулся с той же проблемой, и мои типы контента были multipart и text / html и application / json
Я не ставил чек для text / html и хотел прочитать вложение, которое было в " application / json ".Я непосредственно читал имя файла и, следовательно, ошибка - имя файла не было.
Когда я ставлю чек - `
if part.get_content_maintype() == 'text/html':
continue
if part.get('Content-Type')== 'application/json':
filename = part.get_filename().split('.')
#do the stuff needed
` Никакой ошибки не будет.
Надеюсь, это поможет