Знаете ли вы, что можно отправлять электронные письма с помощью Python? Мало того, вы также можете отправлять прикрепленные файлы!

И вместо того, чтобы использовать обычный текст черный-текст-белый-фон, который большинство людей используют, вы можете отправлять свои электронные письма в виде файлов HTML, чтобы добавить немного изюминки к своим электронным письмам, например:

Всего за несколько минут вы узнаете, как создать SMTP-сервер для отправки электронных писем с использованием Python списку клиентов, студентов, друзей ...

В этом уроке вы научитесь:

  • Отправить одно письмо одному человеку
  • Добавьте информацию, такую ​​как ваше имя, имя получателя или тему, чтобы сделать ее более похожей на человека
  • Отправить одно письмо нескольким людям
  • Сделайте красивое электронное письмо с помощью HTML
  • Прикрепляйте файлы к отправленным нами электронным письмам

Настраиваем все

Мы собираемся отправлять электронные письма, используя учетную запись Gmail. Прежде всего, создайте учетную запись Gmail (или используйте свою) и включите «Небезопасный доступ к приложениям» в своей учетной записи. Вы можете сделать это здесь:

Https://myaccount.google.com/u/0/security?hl=en&pli=1

После этого все готово! Создайте среду с помощью Python (я использую pipenv, поэтому pipenv shell), и вы готовы к работе!

Простой, индивидуальный отправитель электронной почты

Начнем с создания простого скрипта, который отправляет одно текстовое электронное письмо другим людям из вашей учетной записи (я использую pipenv, поэтому создаю его с помощью оболочки pipenv):

Создайте файл Python, например email_server.py, и напишите:

smtp - это модуль Python, который мы будем использовать для создания объекта сеанса SMTP (Simple Mail Transfer Protocol), который будет отправлять любое электронное письмо, которое мы захотим. Модуль ssl обеспечивает доступ к TLS (Transport Layer Security), чтобы помочь нам сделать его более безопасным.

Затем мы добавим некоторые переменные, такие как адрес электронной почты отправителя и получателя, запрос пользователю ввести пароль электронной почты и текст сообщения электронной почты. Замените значения в верхнем регистре своими. Для тестирования я использую тот же адрес электронной почты.

После настройки давайте напишем функцию, которая будет отправлять электронные письма:

Эта функция:

  • Создайте экземпляр smtplib.SMTP. Мы используем Gmail, поэтому отправляем его с использованием хоста smtp.gmail.com и порта 587. Вы можете использовать других провайдеров (например, hotmail), используя их хост и порт.
  • Зашифруйте электронную почту с помощью метода starttl.
  • Войдите в нашу учетную запись электронной почты Google
  • Отправьте электронное письмо, используя электронную почту отправителя, на электронную почту получателя, и сообщение будет просто текстом.
  • Используйте попытку, за исключением того, чтобы поймать все ошибки и finallyi закрыть экземпляр SMTP.

Запустите код прямо сейчас, и вы получите письмо по электронной почте!

Но мы здесь не для того, чтобы отправлять сообщения по электронной почте. Мы можем это сделать сами!

Давайте теперь отправим несколько писем в список.

Отправка писем списку людей

Чтобы отправить несколько писем, нам нужно всего лишь кое-что изменить. Давайте также сделаем наши электронные письма более личными, добавив в них тему и информацию об отправителе:

Во-первых, давайте напишем больше человеческих писем:

Добавьте строки с комментарием «# Новая строка». Мы импортируем MIMEText (многоцелевые расширения электронной почты) для настройки наших электронных писем и вспомогательный метод formataddr.

После первой печати, но перед попыткой добавьте эту конфигурацию:

Теперь мы создаем экземпляр MIMEText с email_body в виде обычного текста, устанавливаем текст «Кому» на имя получателя и адрес электронной почты, текст «От» - на наше имя и адрес электронной почты, а тему - на «Привет, мой друг, ИМЯ».

Наконец, измените метод sender.sendmail на:

server.sendmail (sender_email, получатель_email, msg.as_string ())

Отправьте письмо еще раз:

Хорошо, теперь меньше спама. Давайте отправим это 100% нормальное, а не поддельное письмо по списку людей:

Поскольку мы собираемся перебирать электронные письма и имена получателей, добавьте перед кодом ниже переменной Receiver_names этот цикл for и вставьте код, чтобы он принадлежал циклу:

Это должен быть ваш код прямо сейчас:

Запустите код, и ваше письмо будет отправлено на 3 разных адреса электронной почты!

Здесь мы отправляем электронное письмо трем разным людям, но вы можете отправить его сотням своих студентов, подписчиков, читателей блогов и т. Д.! И…

… Они получат уродливое письмо.

Я обещал вам отправлять красивые электронные письма с помощью Python, которые могут привлечь людей к чему угодно. Итак, начнем!

Отправка красивых писем с помощью HTML

Все очень просто. Теперь мы отправляем строку как email_body, верно?

Вместо этого мы отправим строку, содержащую HTML-код.

Во-первых, давайте создадим наш HTML-файл. Используйте редактор кода, например VS Code или Atom, или создайте его с помощью онлайн-редактора, например https://html5-editor.net/.

Сохраните его в HTML-файл (мой - email.html).

Теперь поместите email_body следующим образом:

Замените старую строку на новую:

Запустите код и вот результат:

Довольно круто, правда?

Но что, если мы хотим также отправлять счета-фактуры, PDF-файлы, файлы Excel, видео или другие файлы?

Добавляйте файлы к своим электронным письмам - обязательный пример cat.gif

Чтобы добавить файлы, вместо отправки одного объекта, HTML, мы отправим несколько частей. Один - это HTML, другой - гифка. Для этого добавьте это:

Не забудьте добавить в папку файл с именем «cat.gif» или заменить его собственным.

Замените создание msg = MIMEText (email_body, ‘html’) следующим:

Это создаст первую часть тела, ту, которая содержит HTML, теперь давайте добавим вложение:

Это будет:

  • Загрузите прикрепленный файл
  • Закодировать это
  • Добавьте в шапку как вложение
  • Добавьте деталь в MIMEMultipart
  • Бросок и ошибка, если файл не найден.

Проверьте свой код с моим:

Запустите код ... и теперь в письме есть вложение!

Вывод

Написать код, который позволит вам отправить электронное письмо в ваш список рассылки, с вложенными файлами и намного более привлекательным, чем скучная простая формула черный-текст-белый-фон, легко.

Хотя это однофайловый скрипт, вы можете легко включить его в реальное веб-приложение Python framework (Flask, Django….), Другую программу, которую вы фактически используете, или улучшить текущую для выполнения большего количества функций.

Создавать и отправлять электронные письма с Python еще никогда не было так просто!

Мои обучающие видео на Youtube

Окончательный код на Github

Свяжитесь со мной в Твиттере

Прочитать больше уроков

Первоначально опубликовано на сайте playslearnabout.net 25 сентября 2019 г.