Полное руководство для профессионалов в области данных (бизнес-аналитика)

Отправить уведомление о данных с помощью Python SMTP

Отправка бизнес-отчетов и электронной почты с помощью Python smtplib

Постановка задачи:

Для специалистов по обработке данных очень важно сообщать отчеты нетехническим пользователям, особенно если в данных есть какие-то отклонения от нормы. Судя по моему опыту работы, большинство аналитиков отправляли бизнес-отчеты пользователям вручную - они обрабатывали данные, выполняли некоторые проверки и генерировали отчеты для отправки через Outlook / gmail. Все это занимает много времени и оставляет место для человеческих ошибок.

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

Это сэкономит массу времени и нервов!

Войдите в библиотеку SMTP Python

Простой протокол передачи почты (SMTP) позволяет пользователям отправлять почту другому. Когда вы отправляете почту из приложения Python, пользователи получают ее через протокол почтового отделения (POP) и протокол доступа к сообщениям в Интернете (IMAP). Это основа для стандартных почтовых интерфейсов, таких как Outlook и Gmail.

SMTP позволяет серверу прослушивать запросы электронной почты через TCP-соединение, а затем отправлять электронную почту через порт 587 (Data Flair).

Python SMTP в действии

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

Мы посетим наши предыдущие проекты Создание веб-приложения для панели инструментов с планировщиком задач, чтобы очистить веб-данные с веб-сайта Lazada (электронная коммерция) и сбросить их в базу данных« SQLite RDBMS . Основываясь на продуктах, которые подтверждены пользователями, мы собираемся проверить, не упадет ли цена по сравнению с первоначальной ценой, и использовать ее для генерации предупреждений.

Не стесняйтесь просто наслаждаться этой статьей или посетить мой Github Repo для получения полных кодов. Или просто прокрутите вниз и наслаждайтесь этой статьей.

Для вас, кто не знаком с веб-приложением Dashboard, о котором я говорю. Я создаю информационную панель на основе изменений цен на Lazada Scraped Products. Каждый раз, когда пользователь изменяет раскрывающийся список ввода, приложение будет предупреждать пользователей, если цена продукта упадет.

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

Вот ключевые важные шаги для этого:

  1. Импорт Python SMTP
  2. Создание свойств электронной почты и SMTP-сервера
  3. Отправка запросов по электронной почте
  4. Подготовка веб-перехватчиков с помощью нашей панели инструментов Python Dash
  5. Создание файла конфигурации для секретов аутентификации электронной почты

Импорт и активация Python SMTP

Python smtplib уже встроен, когда вы загружаете пакеты Python. Если он у вас запущен, вы можете просто импортировать smtplib следующим образом:

import smtplib

Чтобы активировать SMTP-соединение, вам нужно будет вставить свои учетные данные для аутентификации, заменив теги следующим образом:

gmail_user = '<input your gmail user. No need to use @gmail.com>'
gmail_password = '<input your gmail password>'

Это все! Очень просто.

Создание свойств электронной почты и SMTP-сервера

При создании электронных писем необходимо учитывать 2 части: свойства электронной почты и запрос на отправку электронной почты.

В свойствах электронной почты вы можете настроить:

#email properties
sent_from = gmail_user
to = [<email_send_address>]
subject = 'Alert for reduced in price'
email_text = 
"""
Alert for reduced in price
"""
  1. sent_from: отправитель, отправляющий электронное письмо
  2. to: адресат электронного письма
  3. subject: тема письма
  4. email_text: содержимое тела письма.

В запросе на отправку электронной почты здесь настраивается SMTP-сервер:

#email send request
try:
    server = smtplib.SMTP_SSL('smtp.gmail.com', 465)
    server.ehlo()
    server.login(gmail_user, gmail_password)
    server.sendmail(sent_from, to, email_text)
    server.close()

    print ('Email sent!')
except Exception as e:
    print(e)
    print ('Something went wrong...')
  1. smtplib настраивают SMTP-сервер с каналом gmail Secure Socket Layer (SSL) и портом 465. Это позволит нам отправлять сообщения из нашей собственной учетной записи Gmail.
  2. ehlo() используется для идентификации себя на сервере. Это проверит расширения службы SMTP (ESMTP) на настроенном нами сервере gmail.
  3. login довольно прост. Мы будем использовать собственное имя пользователя и пароль для входа на сервер Gmail.
  4. Затем мы будем использовать нашу учетную запись для sendmail to, используя свойства электронной почты, которые мы настроили ранее.
  5. Наконец, мы close сервер, который освободит наш порт 465 и использование памяти для сервера.

Отправка запросов по электронной почте

После настройки свойств все готово. Вам просто нужно запустить его. А также…

вы столкнулись с проблемой.

Устраните свои проблемы

Скорее всего, вы столкнетесь с этой ошибкой

Если вы столкнулись с этой ошибкой и дважды проверили правильность своего имени пользователя и пароля, вам нужно будет открыть настройки Gmail и включить опцию Небезопасный доступ к приложениям. Это позволит Python SMTP получить доступ к вашей учетной записи Gmail и отправлять электронные письма от вашего имени.

Конечно, для обеспечения безопасности Gmail вы можете отключить его, когда больше не используете эту функцию.

Наконец, как только вы запустите свой скрипт. Вы получите это письмо. (Отметил, что в настоящее время я использую свою электронную почту для тестирования приложения).

Поздравляю. Вы просто отправляете свой первый автоматический запрос на отправку по электронной почте!

Подготовка веб-перехватчиков с помощью нашей панели инструментов Python Dash

Теперь, когда мы знаем, что наше оповещение работает, давайте настроим веб-хуки.

Веб-перехватчики - это реакция серверного приложения на событие с ограниченными ресурсами, чтобы уведомить клиентское приложение о запуске события. В этом случае мы настроим Dash для активации логики предупреждений каждый раз, когда пользователи изменяют раскрывающийся список на панели инструментов. Мы установим оповещение, если цена на наш товар снизится.

  1. product_df_specific сортирует значения определенного продукта по дате.
  2. original_price обозначает самую раннюю дату продукта.
  3. latest_price принимает самую последнюю и самую последнюю дату продукта.
  4. Затем электронное письмо будет отправлено, как только мы обнаружим, что latest_price ниже, чем original_price.

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

Создание файла конфигурации для секретов аутентификации электронной почты

Помните учетные данные из шага 1?

gmail_user = '<input your gmail user. No need to use @gmail.com>'
gmail_password = '<input your gmail password>'

Давайте поместим эту конфиденциальную информацию в файл свойств, где вы сможете легко защитить и настроить.

Сначала давайте создадим файл свойств Python с именем properties.ini:

[EMAIL]
user= <gmail username>
password = <gmail password>

Это личные файлы, которые вам нужно защитить и обезопасить. Чтобы получить к нему доступ, просто используйте встроенную в Python библиотеку configparser.

import configparser
config = configparser.ConfigParser()
config.read('properties.ini')
gmail_user = config['EMAIL']['user']
gmail_password = config['EMAIL']['password']

Сначала вы инициируете config parser, это структурирует ваши свойства в древовидный каталог для извлечения.

Затем вы read ini-файл свойств и извлекаете свое имя пользователя и пароль так же, как вы извлекаете элемент из 2D-массивов.

Конечные результаты

Поздравляю !! Вы создали свой первый SMTP на своей панели управления. Если бы вы сделали это правильно, вы бы смогли получить такой результат. Если нет, не стесняйтесь вернуться к моим Кодам Github или задать здесь свои вопросы.

Освободитесь и создайте свою собственную панель управления Dash Dashboard и Python SMTP!

Больше ссылок

Если вам нужно больше примеров и лучшее понимание того, что может Python SMTP. Не стесняйтесь посещать следующие ссылки.

  1. Настоящий питон
  2. Учебное пособие
  3. Python для начинающих

Наконец-то…

Я действительно надеюсь, что это было отличное чтение и источник вдохновения для вас, чтобы развиваться и вводить новшества.

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

Спасибо и удачного кодирования :)

об авторе

Винсент Татан - энтузиаст данных и технологий с соответствующим опытом работы в Visa Inc. и Lazada по реализации микросервисных архитектур, бизнес-аналитики и проектов конвейерной аналитики .

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

Он активно консультировал SMU BI & Analytics Club, консультировал начинающих специалистов по обработке данных и инженеров с разным опытом, а также делился своим опытом с компаниями для разработки своих продуктов.

Свяжитесь с Винсентом через LinkedIn, Medium или Youtube Channel.