Знаете ли вы, что можно отправлять электронные письма с помощью 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
Первоначально опубликовано на сайте playslearnabout.net 25 сентября 2019 г.