@ber_enot
Веб-разработчик, Vue.js / Node.js

Как в python пропускать вложения к email?

Доброго времени суток!

Пишу небольшой email-клиент на питоне.
Бывают письма с приложениями до 20МБ.
Вопрос - реально ли получить только текст письма, не загружая лишние 20МБ base64-кода?
Буду благодарен за пример.

Сейчас текст получаю так (кусок кода):
if msg.is_multipart():
        for part in msg.walk():
            ctype = part.get_content_type()
            cdispo = str(part.get('Content-Disposition'))
            if ctype == 'text/html' and 'attachment' not in cdispo:
                body = part.get_payload(decode=True).decode('UTF-8')  # decode
    # если не multipart - т.е plain text, без вложений
    else:
        body = msg.get_payload(decode=True).decode('UTF-8')
    print(body)
  • Вопрос задан
  • 807 просмотров
Пригласить эксперта
Ответы на вопрос 1
JRazor
@JRazor
Senior StarkOverFlow Programmer
Зачем ты кусок кода этот приложил - не ясно. Нужно смотреть выше, там где ты загружаешь письма.

1) Протокол POP3 не поддерживает загрузку email без вложения, а IMAP поддерживает. То есть, возможно ты пишешь уже не под тот протокол.
2) Можно загрузить просто HEADER и почитать тип email. Если content type является mixed, то там есть вложение и письмо можно просто не загружать.
3) Обычно вложения занимают третье место и далее в письме, поэтому просто грузим ["HEADER", "1", "1.MIME"]
4) Почитать про общую стандартизацию почты: tools.ietf.org/html/rfc3501.

Ну и последнее: я недавно писал IMAP клиент для загрузки писем из почтового ящика. Все письма всегда были с вложениями. Просто используй многопоточность, асинхронность и проблема будет решена.
Ответ написан
Ваш ответ на вопрос

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

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