Пошаговое руководство по отправке писем с использованием Python

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

Но разве отправка электронных писем не является более простым способом доставки информации? Электронная почта фактически заменила обычную почту, но все еще требует некоторого ручного вмешательства. Эти формы (но не ограничиваются ими):

  • Набираем электронное письмо
  • Планирование или знание того, когда отправлять электронное письмо
  • Определение того, кто получает электронное письмо

Я уверен, что их больше, но это самые очевидные. В любом случае, что, если бы мы могли автоматизировать отправку электронного письма с кодом? Конкретно с Python? Приложения такой программы могут варьироваться от запланированных напоминаний по электронной почте до электронных писем массового маркетинга для компании. По мере чтения вы узнаете, как быстро настроить простой скрипт Python для отправки электронной почты без необходимости использования провайдера электронной почты, такого как Gmail.

Выберите службу электронной почты

Не говоря уже о Gmail или Yahoo, а об почтовой службе с API. Использование такой службы даст вам большую гибкость при отправке нескольких электронных писем с помощью простого в использовании API. Я обнаружил, что это один из самых простых способов начать работу с электронной почтой на Python.

Почтовый сервис, который я использую, называется SendGrid. Это бесплатное использование и простая установка учетной записи. Бесплатный тарифный план для службы позволяет отправлять до 100 электронных писем каждый день. Он также удобен для разработчиков благодаря документации, поддерживающей Python. Мы будем использовать SendGrid до конца этой статьи.

Начиная

Чтобы начать работу с SendGrid, вам необходимо создать бесплатную учетную запись. После этого выполните следующие действия:

  1. Подтвердите свой адрес электронной почты отправителя. На боковой панели панели инструментов перейдите в Настройки в Аутентификация отправителя в Проверка одного отправителя в Создать нового отправителя. Введите необходимую информацию и перейдите во входящие сообщения электронной почты, чтобы подтвердить адрес.
  2. Получите ключ API - вернитесь в Настройки к Ключу API, чтобы Создать ключ API. Получите полный доступ и назовите его. Нажмите Создать и просмотреть, чтобы просмотреть и скопировать ключ API для использования в будущем.

Вот и все. Если вы хотите добавить дополнительные адреса электронной почты для отправки, вам нужно будет подтвердить их, как и раньше. Имея ключ API и подтвержденный адрес электронной почты, вы готовы приступить к написанию кода.

1. Установите SendGrid.

Предполагая, что вы используете записные книжки Jupyter или лабораторию Jupyter, вы можете установить SendGrid непосредственно из Jupyter с помощью следующей команды:

!pip install sendgrid

В противном случае вы можете просто сделать это в своем командном терминале с помощью той же команды выше, но удалите восклицательный знак - pip install sendgrid.

2. Импортируйте библиотеки SendGrid и установите ключ API.

После установки SendGrid вы можете импортировать библиотеки из пакета:

from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail

Затем вы захотите использовать ключ API и назначить его клиенту SendGrid. Вам нужно будет хранить свой ключ API в секрете. Я сохранил свой в текстовом файле вне кода, чтобы при необходимости получить к нему доступ для назначения:

# Importing and assigning the api key
with open("../sendGrid-API.txt", "r") as f:
    api_key = f.read()
    
# Using the api key with the sendgrid client
sg = SendGridAPIClient(api_key)

3. Задайте переменные электронной почты.

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

sender = "[email protected]"
recipient = "[email protected]"
subject = "Hey Check Out This Test Email!"
content = "I just sent this email with Python. So cool!"

4. Создайте объект электронной почты.

Здесь мы создадим объект электронной почты из SendGrid. Просто используйте указанные выше переменные и присвойте им соответствующие параметры:

email = Mail(
    from_email=sender,
    to_emails=recipient,
    subject=subject,
    html_content=content
)

5. Отправьте электронное письмо.

Здесь мы фактически отправим созданный выше объект электронной почты с помощью клиента SendGrid:

response = sg.send(email)
# Printing out the response 
print(response.status_code)

Распечатайте код статуса ответа, чтобы узнать, принято ли письмо и готово ли оно к отправке.

Кроме того, проверьте почтовый ящик получателя, если вы можете узнать, получили ли вы письмо.

6. Собираем все вместе

Теперь, чтобы объединить предыдущий код в единое целое, мы объединим все вышеперечисленные элементы в одну функцию. Единственное, что нам нужно отрегулировать - это переменные. Вот код:

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

Новые переменные

# New Variables
sender = "[email protected]"
recipient = "[email protected]"
subject = "Hey Check Out This New Test Email!"
# With some html formatting
content = """
    Hey!
    
    <p>I just sent this email by using <b>Python</b>.</p> 
    
    <p><i>It's so cool!<i/></p>
"""
# Testing the function
sendMyEmail(sender, recipient, subject, content)

Вышеуказанные переменные в основном те же, за исключением содержания сообщения. Отличительной особенностью API SendGrid является то, что он поддерживает форматирование текста HTML. Здесь мы отформатировали предыдущий текст, чтобы включить несколько новых HTML-тегов, чтобы новое тестовое письмо стало популярным!

Вот краткое изложение используемых нами HTML-тегов и их эффектов:

  • <p>text</p> - интервал между абзацами.
  • <b>text</b> - Жирный текст.
  • <i>text<i/> - выделить текст курсивом.

Если функция работает нормально, вы должны получить ответное сообщение из приведенного выше кода: ‘Email has been accepted!’

Проверка электронной почты

А чтобы быть более уверенным в функциональности, вы можете проверить почтовый ящик получателя и найти только что отправленное сообщение:

7. Отправка электронных писем с динамически изменяющимися переменными.

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

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

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

import time

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

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

Если цикл прошел успешно, вы должны увидеть три разных письма в почтовом ящике получателя:

Если вы видите что-то похожее на изображение выше - отлично! Вы успешно отправили несколько писем с разными темами и содержанием с помощью Python!

Другие варианты использования

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

  • Отправка личного письма большому списку рассылки.
  • Запланируйте напоминание по электронной почте, которое будет отправлено избранной группе лиц.
  • Отправлять обновления и новую информацию автоматически.
  • Массовые маркетинговые кампании.
  • И более…

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

Надеюсь, вы узнали много нового об отличных приложениях отправки электронной почты с помощью программирования и Python. Это отличное приложение для любых повторяющихся задач электронной почты, с которыми вы можете столкнуться. Подходите к применению этой функции творчески, и вы откроете множество возможностей для автоматизации своих повседневных задач!

Ресурсы

Загляните в этот репозиторий GitHub, чтобы увидеть полный исходный код. А вот и полная документация по SendGrid.

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