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

Наш код уже умеет выгружать контракты с сайта «ГосЗатраты», формировать из них таблицу — теперь осталось только выслать эту таблицу пользователю. Запишем в переменную message то сообщение, которое мы будем высылать. Далее нам понадобится еще несколько переменных.

Первым понадобится список email-адресов, куда мы хотим отправить письмо (email_list) — запишем туда свой адрес. Далее понадобится логин и пароль почты (SENDER_EMAIL и EMAIL_PASSWORD соответственно), с которой письмо будет рассылаться. Возможно, для этого стоит зарегистрировать отдельную почту.

Также будет лучше создать файл config, в котором будет храниться информация о логине и пароле, чтобы она не была доступна никому кроме вас. Теперь пишем функцию send_email_with_contracts (message, email_list) — на вход она получает сообщение, которое нужно отправить, и список получателей письма.

Следом создадим переменную msg, которой зададим тип контента, который мы хотим высылать — в данном случае это alternative. Укажем также тему письма, адрес отправителя рассылки и адреса получателей. Список получателей мы формируем с помощью функции join через запятую. У нас получатель один, но их может быть сколько угодно.

Создаем непосредственно письмо. Передаем нашу переменную message и указываем html в качестве типа данных, потому что таблица, которую мы учились делать на прошлых уроках, как раз на HTML. Таблицу мы прикрепляем к письму.

С помощью сервера Google и безопасного протокола мы заходим в почту-отправителя, передаем логин и пароль и командой send_message отправляем сообщение.

Если вы следовали за нашими уроками, то после запуска всего кода на вашу почту должно прийти письмо с подборкой госконтрактов. В следующий раз научим наш код запускаться автоматически. Если у вас что-то не получилось — не стесняйтесь писать в наш чат в Telegram, постараемся помочь.