Найти в Дзене
InformaticsEasy AI

Как отправить E-mail через Python.

Здравствуйте. Предлагаю вашему вниманию отправку электронной почты через python. Для этого используем встроенную библиотеку smtplib. Отправка письма может выглядеть в разном виде: Все 4 вида я покажу как сделать. Начнем с основного, с настроек. Для начала создадим файл настроек. В этом моменте есть 3 способа: Возможно есть еще какие-то способы, но нам пока достаточно и этих, я буду использовать самый простой, но не защищенный через файл *.py. Итак, начинаем. Создадим файл настроек: Далее создаем класс Message, чтобы в нем проходили подготовительные моменты создания самого сообщения и функцию send_email, которая отвечает за отправку. А также главный запускаемый файл, в котором происходит как раз информационное наполнение письма, создание сообщения и его отправка. Начнем с главного файла. В этом файле делаем все по минимуму: Файл класса Message: В нем мы импортируем все что нужно для создания сообщения. А также наши настройки. В конструкторе __init__, нагружаем наши свойства класса объе

Здравствуйте. Предлагаю вашему вниманию отправку электронной почты через python. Для этого используем встроенную библиотеку smtplib.

Отправка письма может выглядеть в разном виде:

  • в виде обычного текста
  • в виде HTML-кода
  • с вложением 1 файла, нескольких файлов
  • нескольким адресатам

Все 4 вида я покажу как сделать. Начнем с основного, с настроек. Для начала создадим файл настроек. В этом моменте есть 3 способа:

Возможно есть еще какие-то способы, но нам пока достаточно и этих, я буду использовать самый простой, но не защищенный через файл *.py.

Итак, начинаем. Создадим файл настроек:

settings.py
settings.py
  • USER - почта отправителя
  • PASS - пароль отправителя. Если SERVER smtp.gmail.com, то пароль нужно получить здесь: https://myaccount.google.com/apppasswords, я указывал там 2 параметра: почта, ПК Windows.
  • SERVER - сервер, с которого будет отправлено письмо. Возможные: smtp.gmail.com, smtp.yandex.ru, smtp.mail.ru. Если нужно затестить yandex и mail, напишите в комментариях, я затестю.
  • PORT - 587 (tls), 465 (ssl)

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

Начнем с главного файла.

Запускаемый файл
Запускаемый файл

В этом файле делаем все по минимуму:

  1. Импортируем наши созданные функцию send_email и класс Message (они будут ниже)
  2. to_users - указываем адресата или адресатов в виде списка (List) и сразу переводим в нужный формат.
  3. files - докидываем почту вложениями, если нужно, также в виде списка.
  4. создаем объект message (который будем отправлять) с нужными параметрами. Здесь же указывается тема письма.
  5. text - текст сообщения, можно в виде обычного текста, можно в формате HTML.
  6. send - результат отправки сообщения (приходит в виде словаря), который мы получаем при отправке.

Файл класса Message:

Класс Message
Класс Message

В нем мы импортируем все что нужно для создания сообщения. А также наши настройки.

В конструкторе __init__, нагружаем наши свойства класса объектами, которые указаны при создании (строки 12-14). Эти свойства указаны в основном файле (строки 17-19).

Создаем метод create_message:

create_message
create_message

Создаем объект message и добавляем к нему нужную информацию: от кого, тема письма, дата сообщения, получатели письма, приклеиваем текст (если он есть) и указываем, что можно в формате HTML, и если есть вложения, добавляем каждый файл через метод add_file_in_message, ну и указываем кодировку сообщения. В итоге возвращаем созданный объект.

Создаем метод add_file_in_message:

add_file_in_message
add_file_in_message

Опять же создаем объект вложения (и в конце возвращаем его). Создаем заголовок header с указанием файла. Открываем файл, считываем всё в двоичном формате, подгружаем, кодируем и добавляем в объект вложения.

После того как создали объект, пытаемся его отправить получателям:

send_email
send_email

Здесь у нас создается объект smtp. Запускается шифрование TLS. Логинимся через smtp, если вход произошел, то отправляем письмо. Если письмо ушло, возвращаем хорошие данные, если нет, то плохие (все в виде словаря).

Жду ваших комментариев и лайков (жмем не жалеем).

Понравилась статья - подписывайся.

Мои курсы по информатике, математике и Python.

Также приглашаю присоединится к моему сообществу в VK и каналу YouTube.