Как отправить письмо по электронной почте
В этом уроке я покажу, как правильно отправлять письма по электронной почте. Это базовый урок, в котором не будут рассмотрены все функции и возможности почтовых сайтов. Мы просто напишем и отправим сообщение, на которое сразу же получим ответ.
Как написать письмо
Рассмотрим классическую ситуацию. У нас есть адрес электронной почты, на который нужно написать письмо. Он состоит исключительно из английских букв и/или цифр, знака @ посередине и названия почтового сайта (mail.ru, например).
Подробнее об адресах ящиков в интернете я рассказывал в уроке «Адрес электронной почты».
Первое, что нужно сделать, чтобы отправить письмо, это открыть свой электронный ящик. То есть зайти на почтовый сайт, на котором находится Ваш адрес, ввести от него логин и пароль. Откроется личный кабинет.
Вот как он выглядит в почте Яндекса:
Так в Mail.ru:
Так в Gmail:
На других сайтах личный кабинет выглядит примерно также: посередине список сообщений, слева разделы, сверху кнопки для работы.
Нам нужна кнопка под названием «Написать». Еще она может называться «Написать письмо». Как правило, находится такая кнопка на самом видном месте: либо сверху, либо слева.
Вот как она выглядит в Яндексе:
Так в Mail.ru:
Вот так в Gmail:
Откроется форма для отправки. На всех почтовых сайтах она выглядит примерно одинаково. Здесь нас интересуют только три поля: Кому, Тема и большая часть для ввода текста.
Вот эти поля в почте Яндекса:
А вот они в Mail.ru:
Так нужные нам части выглядят в Gmail:
Куда печатать адрес
Часть, в которую нужно печатать адрес электронной почты, называется «Кому».
Допустим, у нас есть адрес, на который нужно отправить сообщение. Вот он:
Щелкаем левой кнопкой мышки внутри поля «Кому» и печатаем его туда. Чтобы набрать значок @ на клавиатуре, нужно нажать на кнопку Shift и, не отпуская ее, нажать один раз на клавишу клавиатуры с цифрой 2 (вверху, над буквами).
Важно: адрес нужно печатать только английскими буквами, без пробелов и без точки в конце.
Что печатать в тему письма
После того, как адрес напечатан, щелкаем левой кнопкой внутри поля «Тема». Здесь нужно напечатать от кого сообщение или о чем оно.
Многие недооценивают значимость этого поля и ничего в него не печатают. Другие же наоборот печатают туда то, о чем хотят написать в письме, то есть используют его для печати текста. Ошибаются и первые и вторые. Попробуем разобраться, в чем тут дело.
Допустим, мы в поле «Тема» ничего не напечатали и отправили письмо. Человек его получит примерно в таком виде:
Первое, что он увидит: от кого пришло сообщение. В моем случае, это адрес электронной почты. Сразу после него идет тема и небольшая часть текста из самого письма.
Как видите, по этим данным совершенно не понятно ни от кого оно, ни что в нем находится.
Проблема в том, что многие люди автоматически сочтут такое сообщение рекламой и даже не откроют. А другие пользователи испугаются, что это вирус и сразу удалят его.
Получается, мы рискуем столкнуться с тем, что отправленное письмо не будет прочитано. Причем, мы об этом даже не узнаем. Для нас это будет выглядеть так, как будто сообщение было проигнорировано. А получатель будет уверен, что ему ничего не приходило.
Другая чуть менее распространенная ситуация, когда в поле «Тема» печатают сам текст сообщения. Вот пример того, как его увидит получатель:
Мало того, что это выглядит нелепо, так еще и не весь текст поместился – часть обрезалась. Если сравнить данную ситуацию с обычной бумажной почтой, то, получается, мы отправили пустой конверт, на котором написали текст письма.
Так что же должно быть в поле «Тема»? В идеале в нем нужно написать что-то такое, что подтолкнет человека открыть письмо. Прочитав тему, он должен понять, что это нужное сообщение, которого он ждет.
Пример:
- Запись на консультацию
- Отчет о работе
- Результаты теста
И лучше, конечно, уточнить, что это за консультация, отчет о какой именно работе и что за тест. То есть нужно сделать так, чтобы по теме человек понял, о чем или от кого сообщение.
Пример правильной «Темы»:
- Запись на консультацию к терапевту
- Отчет о работе по проекту №325
- Результат теста по физике Иванова А.А.
Пример неправильной «Темы»:
- От меня
- Срочно
- Открой
Куда печатать текст
Текст письма, то есть его содержание, нужно печатать в самое большое поле из всех. В любой почтовой системе оно предназначено именно для этого.
Щелкаем по нему левой кнопкой мышки и печатаем, то, что хотим написать. Если это поле Вам кажется недостаточно большим, не переживайте, оно автоматически расширится, когда текста будет много.
Как отправить письмо
Для отправки письма нужно нажать на специальную кнопку. Обычно она так и называется — «Отправить» — и находится либо вверху, над полями, либо внизу, под ними. А во многих почтовых сайтах она есть и там и там.
На кнопку «Отправить» нужно нажимать только один раз! Чем больше раз Вы нажмете на нее, тем больше одинаковых сообщений придет получателю.
Принцип следующий: написали письмо, навели мышку на «Отправить», щелкнули один раз левой кнопкой и ждете. Как правило, через несколько секунд почтовый сайт напишет, что сообщение отправлено.
Задание
Напишите письмо на адрес электронной почты
Представьте, что Вы пишете знакомому, которого не видели несколько месяцев. Кратко расскажите, как у Вас дела и что нового (можно одно-два предложения). Не забудьте про тему!
В течение минуты после отправки на Вашу почту придет автоматический ответ, так сказать, подтверждение того, что письмо получено.
Внимание: это тренировочный адрес, на котором настроены автоматические ответы. Не ожидайте писем от реального человека.
Автор: Илья Кривошеев
Как отправить HTML по электронной почте
Большинство современных почтовых клиентов отправляют электронную почту в формате HTML по умолчанию, когда сообщение составлено в самом клиенте. Например, Gmail и Yahoo! Почта имеет встроенные редакторы WYSIWYG , которые можно использовать для написания HTML-сообщений. Однако, если вы хотите написать свой HTML во внешнем редакторе, а затем использовать его в своем почтовом клиенте, это может быть немного сложнее.
Существует множество редакторов, которые можно использовать для создания HTML-сообщения, от простых, таких как « Блокнот» в Windows, до полнофункционального приложения, такого как Dreamweaver . Другие хорошие (и бесплатные) опции включают Notepad ++ , NetBeans , CoffeeCup и Komodo Edit .
Шаги для написания вашего HTML
TimeStopper / Getty ImagesЕсли вы собираетесь писать свои HTML-сообщения в другом редакторе, вам нужно запомнить несколько вещей, чтобы ваши сообщения работали.
- Ваши изображения должны быть размещены на общедоступном веб-сайте. Они не обязательно должны быть на веб-странице, но они должны быть общедоступными в Интернете.
- Используйте полный URL-адрес изображения в атрибуте <src> и проверьте, правильно ли отображается ваше изображение перед отправкой сообщения.
- Не используйте относительные пути в ссылках.
- Если вы используете CSS, вы должны либо встраивать их в HTML с помощью элемента <style>, либо ссылаться на них с помощью полного URL-адреса.
- Лучше избегать JavaScript, потому что почтовые клиенты обычно отключают их по соображениям безопасности. Однако, если вы должны использовать его, вы должны встроить его с элементом <script>.
Всегда используйте полный интернет-адрес для изображений и других ресурсов, которые вы будете использовать в своем HTML-письме, чтобы клиент получателя знал, где получить к ним доступ в Интернете.
Следует помнить, что почтовые клиенты могут не поддерживать расширенные функции, такие как Ajax, CSS или HTML5 . Чем проще вы делаете свои сообщения, тем больше вероятность того, что они будут доступны для просмотра большинству ваших клиентов.
Некоторые почтовые клиенты упрощают использование HTML, созданного в программе или редакторе HTML. Ниже приведены краткие руководства по созданию и внедрению HTML в нескольких популярных почтовых клиентах.
Gmail и Mac Mail
Gmail и приложение «Почта» на Mac не предлагают способа составления электронного письма в HTML внутри клиента. Однако вы можете отправить сообщение HTML любому из этих двух клиентов, скопировав и вставив код HTML, созданный в другом приложении.
Напишите свою электронную почту в редакторе HTML. Обязательно используйте полные пути, включая URL-адреса любых внешних файлов, как указано выше.
Как только файл HTML будет завершен, сохраните его на жестком диске (не важно где).
Откройте файл HTML в веб-браузере . Если он выглядит так, как вы ожидаете (изображения видны, стили CSS корректны и т. Д.), Выберите всю страницу с помощью Ctrl + A на ПК с Windows или Cmd + A на Mac.
Нажмите Ctrl + C (Windows) или Cmd + C (Mac), чтобы скопировать все содержимое страницы.
В Gmail или Mac Mail запустите новое сообщение. Вставить содержимое страниц , скопированных выше , в теле сообщения , используя Ctrl + V или Cmd + V .
Вы можете редактировать текст после его вставки в новое сообщение, но будьте осторожны, чтобы не удалить ни один из ваших стилей или встроенных изображений; их трудно исправить, не повторяя предыдущие шаги.
буревестник
Напишите свою электронную почту в редакторе HTML. Обязательно используйте полные пути, включая URL-адреса любых внешних файлов.
Выделите весь HTML-код, используя Ctrl + A (Windows) или Cmd + A (Mac). Чтобы увидеть сам код, вам, возможно, придется изменить представление с WYSIWYG на представление исходного кода HTML, которое показывает все теги HTML и т.
Д.
Скопируйте HTML — код , используя
Откройте Thunderbird и напишите новое сообщение.
В меню сообщения нажмите Вставить и выберите HTML.
Когда всплывающие окна появляется HTML, вставьте HTML в окно, нажав Ctrl + V или Cmd + V .
Нажмите Вставить, и ваш HTML-код будет вставлен в ваше сообщение.
Преимущество использования Thunderbird в качестве почтового клиента
Вы можете подключить учетные записи электронной почты, такие как Gmail, Yahoo! Почта и многие другие в почтовый клиент Thunderbird и использовать его в качестве универсального почтового приложения. Возможно, вы захотите сделать это, потому что немного легче вставить HTML в сообщение Thunderbird, и вы можете отправлять исходящие сообщения через любую из подключенных учетных записей электронной почты.
Не каждый может читать электронные письма в формате HTML
Если вы отправите HTML-письмо человеку, чей почтовый клиент не поддерживает его, он получит HTML-код в виде обычного текста. Если они не веб-разработчик и не знакомы с чтением HTML (и даже если это так, неудобно, если не сказать больше), письмо будет в лучшем случае трудным для чтения, а в худшем — немногим более, чем нечитаемое трюк.
Если вы отправляете новостную рассылку по электронной почте , вы должны дать своим читателям возможность выбрать электронную почту в формате HTML или обычный текст при регистрации. Если вы просто используете его для отправки электронных писем друзьям и родственникам, убедитесь, что они могут читать электронные письма в формате HTML.
Как писать электронные письма в формате HTML и отправлять их с помощью Gmail?
В этой статье мы узнаем, как пользователи могут писать электронные письма в формате HTML и отправлять их с помощью Gmail. Тем не менее, Gmail не предлагает HTML-редактор, но мы можем отправлять HTML-шаблоны по электронной почте, используя некоторые инструменты и методы. Многим людям необходимо отправить электронное письмо с HTML-шаблоном другим. Используя приведенные ниже методы, пользователи смогут отправлять электронные письма в формате HTML с помощью Gmail. Им не нужно использовать сторонние инструменты, такие как Mailchimp и т. д.
Существует 3 способа отправки электронной почты в формате HTML с помощью Gmail.
- Скопируйте и вставьте HTML-код с веб-страницы в редактор Gmail.
- С помощью инструмента разработчика Chrome.
- С помощью расширения Chrome.
Метод 1: Скопируйте и вставьте HTML-код с веб-страницы в редактор Gmail
Gmail предлагает редактор «что видишь, то и получаешь». Если мы вставим необработанный HTML-код в редактор, получатель также увидит тот же необработанный HTML-код. Итак, вместо того, чтобы добавлять необработанный HTML, нам нужно скопировать вывод HTML-кода из веб-браузера и вставить его в редактор Gmail. Следующие шаги помогут вам создать электронное письмо в формате HTML.
Шаг 1: Создайте новый HTML-файл и добавьте в него приведенный ниже HTML-код.
Шаг 2: Откройте HTML-файл в веб-браузере и скопируйте HTML оттуда.
Шаг 3: Вставьте HTML-код в редактор Gmail.
Шаг 4: Отправьте электронное письмо так, как вы обычно отправляете его из Gmail.
Способ 2: С помощью инструмента разработчика Chrome
Инструмент разработчика Chrome позволяет пользователям редактировать код веб-страницы. Здесь мы найдем соответствующий элемент для редактора Gmail и добавим к нему HTML-код. Пользователи должны выполнить следующие шаги, чтобы использовать этот метод.
Шаг 1: Откройте редактор Gmail и щелкните правой кнопкой мыши в любом месте редактора.
Шаг 2: В меню выберите пункт проверить . Вы увидите, что инструмент разработчика Chrome открыт и HTML-код редактора Gmail.
Шаг 3: Пользователю необходимо найти элемент div с отметкой « contenteditable=true ». Щелкните правой кнопкой мыши элемент div и выберите редактировать как HTML .
Шаг 4: Удалите код из элемента div и добавьте код своего HTML-шаблона.
Шаг 5: Теперь закройте инструмент разработчика Chrome, и вы увидите, что HTML добавлен в редактор Gmail.
Способ 3. Используя расширение chrome
Мы будем использовать расширение « Html inserter for Gmail» chrome для прямого написания HTML-кода в редакторе Gmail. Нам просто нужно добавить расширение Chrome в браузер Chrome, и Gmail автоматически покажет возможность написания HTML-кода. Чтобы реализовать этот метод, выполните следующие шаги.
Шаг 1: Добавьте Html-вставку для расширения Gmail Chrome в браузер Chrome отсюда.
Шаг 2: Щелкните значок HTML рядом с кнопкой отправки.
Шаг 3: Добавьте сюда код HTML.
Шаг 4: Нажмите кнопку Вставить HTML , и все готово.
Примечание: Когда вы отправляете электронное письмо с шаблоном HTML, вы не должны добавлять CSS с помощью внешнего файла CSS и веб-шрифтов. Кроме того, вы должны использовать только размещенные в Интернете и общедоступные изображения внутри HTML-шаблона.
Вывод:
Все 3 вышеуказанных метода дадут тот же результат, что и на изображении ниже. Теперь пользователи могут отправлять этот HTML-шаблон кому угодно, например, по электронной почте.
Примеры — Документация по Python 3.11.2
Вот несколько примеров использования пакета электронной почты
для чтения, записи,
и отправлять простые сообщения электронной почты, а также более сложные сообщения MIME.
Во-первых, давайте посмотрим, как создать и отправить простое текстовое сообщение (как текстовое содержимое и адреса могут содержать символы Юникода):
# Импорт smtplib для фактической функции отправки импорт smtplib # Импортируем модули электронной почты, которые нам понадобятся из email.message импортировать EmailMessage # Открыть простой текстовый файл, имя которого находится в текстовом файле, для чтения. с открытым (текстовым файлом) как fp: # Создать текстовое/простое сообщение msg = Сообщение электронной почты () msg.set_content(fp.read()) # me == адрес электронной почты отправителя # вы == адрес электронной почты получателя msg['Subject'] = f'Содержимое {текстового файла}' msg['От'] = я msg['Кому'] = вы # Отправьте сообщение через наш собственный SMTP-сервер. s = smtplib.SMTP('локальный хост') s.send_message(сообщение) s.выход()
Разбор заголовков RFC 822 можно легко выполнить с помощью классов
из модуля парсера
:
# Импортируем нужные нам почтовые модули из email.parser импортировать BytesParser, Parser из email.policy импортировать по умолчанию # Если заголовки электронной почты находятся в файле, раскомментируйте эти две строки: # с open(messagefile, 'rb') как fp: # заголовки = BytesParser(policy=default).parse(fp) # Или для разбора заголовков в строке (это необычная операция) используйте: заголовки = Парсер (политика = по умолчанию).parsestr ( 'От: Foo Bar\n' 'Кому: \n' 'Тема: Тестовое сообщение\n' '\n' 'Тело пойдет сюда\n') # Теперь к элементам заголовка можно получить доступ как к словарю: print('Кому: {}'.format(заголовки['в'])) print('От: {}'.format(заголовки['от'])) print('Тема: {}'.format(заголовки['тема'])) # Вы также можете получить доступ к частям адресов: print('Имя пользователя-получателя: {}'.format(headers['to'].addresses[0].username)) print('Имя отправителя: {}'.format(headers['from'].addresses[0].display_name))
Вот пример того, как отправить сообщение MIME, содержащее группу членов семьи. изображения, которые могут находиться в каталоге:
# Импорт smtplib для фактической функции отправки. импорт smtplib # Вот модули пакета электронной почты, которые нам понадобятся.из email.message импортировать EmailMessage # Создайте сообщение электронной почты контейнера. msg = Сообщение электронной почты () msg['Subject'] = 'Наша семейная встреча' # me == адрес электронной почты отправителя # family = список адресов электронной почты всех получателей msg['От'] = я msg['Кому'] = ', '.join(семья) msg.preamble = 'Вы не увидите это в программе чтения почты с поддержкой MIME.\n' # Открыть файлы в бинарном режиме. Вы также можете опустить подтип # если вы хотите, чтобы MIMEImage угадал его. для файла в pngfiles: с открытым (файл, 'rb') как fp: img_data = fp.read() msg.add_attachment(img_data, maintype='изображение', подтип='png') # Отправьте электронное письмо через наш собственный SMTP-сервер. с smtplib.SMTP('localhost') как s: s.send_message(сообщение)
Вот пример того, как отправить все содержимое каталога по электронной почте сообщение: 1
#!/usr/bin/env python3 """Отправить содержимое каталога в виде сообщения MIME.""" импорт ОС импорт smtplib # Для угадывания типа MIME по расширению имени файла импортировать MIME-типы из argparse импортировать ArgumentParser из email.message импортировать EmailMessage из email.policy импортировать SMTP деф основной(): синтаксический анализатор = ArgumentParser (описание = """\ Отправить содержимое каталога в виде сообщения MIME. Если не указана опция -o, электронная почта отправляется путем переадресации на ваш локальный адрес. SMTP-сервер, который затем выполняет обычный процесс доставки. Ваша локальная машина должен быть запущен SMTP-сервер. """) parser.add_argument('-d', '--directory', help="""Отправить содержимое указанного каталога, в противном случае используйте текущий каталог. Только обычный файлы в каталоге отправляются, и мы не возвращаемся к подкаталоги.""") parser.add_argument('-o', '--output', метавар = 'ФАЙЛ', help="""Печать составленного сообщения в ФАЙЛ вместо отправка сообщения на SMTP-сервер.
""") parser.add_argument('-s', '--sender', required=True, help='Значение заголовка From: (обязательно)') parser.add_argument('-r', '--recipient', required=True, action='добавить', metavar='RECIPIENT', по умолчанию=[], назначение='получатели', help='A To: значение заголовка (необходимо хотя бы одно)') аргументы = парсер.parse_args() каталог = args.directory если не каталог: каталог = '.' # Создать сообщение msg = Сообщение электронной почты () msg['Subject'] = f'Содержимое каталога {os.path.abspath(каталог)}' msg['Кому'] = ', '.join(args.recipients) msg['От'] = args.sender msg.preamble = 'Вы не увидите это в программе чтения почты с поддержкой MIME.\n' для имени файла в os.listdir(каталог): путь = os.path.join (каталог, имя файла) если не os.path.isfile(путь): продолжать # Угадайте тип содержимого по расширению файла.
Кодирование # будет проигнорирован, хотя мы должны проверять такие простые вещи, как # gzip или сжатые файлы. ctype, encoding = mimetypes.guess_type (путь) если ctype равен None или кодировка не None: # Невозможно предположить, или файл закодирован (сжат), поэтому # использовать общий тип набора битов. ctype = 'приложение/октет-поток' основной тип, подтип = ctype.split('/', 1) с открытым (путь, 'rb') как fp: msg.add_attachment(fp.read(), основной тип = основной тип, подтип=подтип, имя файла=имя файла) # Теперь отправьте или сохраните сообщение если args.output: с открытым (args.output, 'wb') как fp: fp.write(msg.as_bytes(policy=SMTP)) еще: с smtplib.SMTP('localhost') как s: s.send_message(сообщение) если __name__ == '__main__': основной()
Вот пример того, как распаковать сообщение MIME, подобное тому, которое выше, в каталог файлов:
#!/usr/bin/env python3 """Распаковать сообщение MIME в каталог файлов.""" импорт ОС импорт электронной почты импортировать MIME-типы из email.policy импортировать по умолчанию из argparse импортировать ArgumentParser деф основной(): синтаксический анализатор = ArgumentParser (описание = """\ Распакуйте сообщение MIME в каталог файлов. """) parser.add_argument('-d', '--directory', required=True, help="""Распаковать сообщение MIME в указанный каталог, который будет создан, если он еще не существовать.""") parser.add_argument('msgfile') аргументы = парсер.parse_args() с open(args.msgfile, 'rb') как fp: msg = email.message_from_binary_file(fp, policy=default) пытаться: os.mkdir(args.directory) кроме FileExistsError: проходить счетчик = 1 для части в msg.walk(): # multipart/* - это просто контейнеры если part.get_content_maintype() == 'многочастный': продолжать # Приложения должны действительно очищать заданное имя файла, чтобы # сообщение электронной почты нельзя использовать для перезаписи важных файлов имя_файла = часть.
get_filename() если не имя файла: ext = mimetypes.guess_extension(part.get_content_type()) если не доп: # Используйте универсальное расширение пакета битов доб = '.bin' имя файла = f'part-{counter:03d}{ext}' счетчик += 1 с open(os.path.join(args.directory, имя файла), 'wb') как fp: fp.write(part.get_payload(decode=True)) если __name__ == '__main__': основной()
Вот пример того, как создать HTML-сообщение с альтернативным простым текстовая версия. Чтобы сделать вещи немного более интересными, мы включаем связанные изображение в html-части, и мы сохраняем копию того, что мы собираемся отправить диск, а также его отправку.
#!/usr/bin/env python3 импорт smtplib из email.message импортировать EmailMessage из email.headerregistry импортировать адрес из email.utils импортировать make_msgid # Создать базовое текстовое сообщение. msg = Сообщение электронной почты () msg['Subject'] = "Ayons asperges pour le déjeuner" msg['From'] = Address("Пепе Ле Пью", "pepe", "example.com") msg['Кому'] = (Адрес("Пенелопа Кошечка", "пенелопа", "example.com"), Адрес("Fabette Pussycat", "fabrette", "example.com")) msg.set_content("""\ Салют! Села похожа на превосходный рецепт[1] déjeuner. [1] http://www.yummly.com/recipe/Roasted-Asparagus-Epicurious-203718 --Пепе """) # Добавляем html-версию. Это преобразует сообщение в составное/альтернативное # контейнер с исходным текстовым сообщением в качестве первой части и новым html # сообщение как вторая часть. asparagus_cid = make_msgid() msg.add_alternative("""\ <голова>голова> <тело>
Салют!
Села выглядит превосходно рецепт молодой.
тело> """.format(asparagus_cid=asparagus_cid[1:-1]), подтип='html') # обратите внимание, что нам нужно было убрать <> из msgid для использования в html. # Теперь добавьте связанное изображение в html-часть.
с открытым("жареная-спаржа.jpg", 'rb') как img: msg.get_payload()[1].add_related(img.read(), 'изображение', 'jpeg', cid=спаржа_cid) # Сделать локальную копию того, что мы собираемся отправить. с open('outgoing.msg', 'wb') как f: f.write(байты(msg)) # Отправить сообщение через локальный SMTP-сервер. с smtplib.SMTP('localhost') как s: s.send_message(сообщение)
Если бы нам было отправлено сообщение из предыдущего примера, вот один из способов, которым мы могли бы обработать:
импорт ОС импорт системы импортировать временный файл импортировать MIME-типы импортировать веб-браузер # Импортируем модули электронной почты, которые нам понадобятся из политики импорта электронной почты из email.parser импортировать BytesParser def magic_html_parser (html_text, partfiles): """Возвратить безопасный html, связанный с partfiles. Перепишите атрибуты href="cid:....", чтобы они указывали на имена файлов в partfiles. Хотя это и не тривиально, это должно быть возможно с помощью html.parser. """ поднять NotImplementedError("Добавьте необходимое волшебство") # В реальной программе вы получите имя файла из аргументов. с open('outgoing.msg', 'rb') как fp: msg = BytesParser(policy=policy.default).parse(fp) # Теперь к элементам заголовков можно получить доступ как к словарю, и любой не-ASCII будет # преобразовать в юникод: print('Кому:', сообщение['кому']) print('От:', сообщение['от']) print('Тема:', сообщение['тема']) # Если мы хотим распечатать предварительный просмотр содержимого сообщения, мы можем извлечь все, что угодно. # наименее отформатированная полезная нагрузка и вывести первые три строки. Конечно, # если в сообщении нет текстовой части, выводим первые три строки html # скорее всего бесполезно, но это всего лишь концептуальный пример. простейший = msg.get_body(preferencelist=('plain', 'html')) Распечатать() print(''.join(simplest.get_content().splitlines(keepends=True)[:3])) ans = input("Просмотреть полное сообщение?") если ans.lower()[0] == 'n': sys.
exit() # Мы можем извлечь самую богатую альтернативу, чтобы отобразить ее: самый богатый = msg.get_body() частифайлы = {} если самый богатый['тип контента'].maintype == 'текст': если самый богатый ['content-type'].subtype == 'plain': для строки в richest.get_content().splitlines(): печать (строка) sys.exit() elif richest['content-type'].subtype == 'html': тело = самый богатый еще: print("Не знаю, как отобразить {}".format(richest.get_content_type())) sys.exit() elif richest['content-type'].content_type == 'multipart/related': тело = самое богатое.get_body (список предпочтений = ('html')) для части в richest.iter_attachments(): fn = часть.get_filename() если фн: расширение = os.path.splitext(part.get_filename())[1] еще: расширение = mimetypes.guess_extension(part.get_content_type()) с tempfile.NamedTemporaryFile(suffix=extension, delete=False) как f: f.